Skip to main content
Glama

Medical Terminologies MCP Server

npm version npm downloads node MCP Registry LobeHub Glama MCP server Available on CodeGuilds GitHub stars GitHub Sponsors tool calls MCP License: MIT

A Model Context Protocol (MCP) server providing unified access to major global medical terminologies:

  • ICD-11 - International Classification of Diseases (WHO)

  • LOINC - Logical Observation Identifiers Names and Codes

  • RxNorm - Normalized names for clinical drugs (NIH)

  • MeSH - Medical Subject Headings (NLM)

  • ATC - Anatomical Therapeutic Chemical classification (WHO Collaborating Centre, served via NLM RxClass)

  • CID-10 - Brazilian Portuguese translation of ICD-10 (DataSUS V2008, bundled)

🇧🇷 Leia em Português

See it in action

Ask your assistant:

  • "What's the ICD-11 code for type 2 diabetes?" → icd11_search

  • "Map ICD-10 code E11 to ICD-11." → map_icd10_to_icd11

  • "What does LOINC 2339-0 measure?" → loinc_details

  • "Qual o código CID-10 para infarto agudo do miocárdio?" → cid10_search

The answers come from authoritative sources (WHO, NLM, NIH, DataSUS) — real codes and mappings, not guesses from training data.

Related MCP server: medical-mcp

Features

  • 33 tools: 31 terminology tools plus search/fetch for ChatGPT Deep Research

  • 3 MCP Prompts that orchestrate tool calls into named workflows (find-medical-code, drug-info, cid10-portuguese-lookup) — clients render these as one-click user actions

  • 4 MCP Resources for in-process reference content (info://server, info://cid10/chapters, info://licenses, info://stats) — sub-millisecond reads (except info://stats which round-trips to the StatsCounter Durable Object on the hosted endpoint)

  • Multi-terminology support in a single server

  • Cross-terminology mapping and search

  • Provenance on every response (since v1.8.0): each successful tool result carries a machine-readable provenance block — source, canonical URL, data vintage, real extraction instant (cache hits keep the original fetch instant), ready-to-use citation, and license — in structuredContent.provenance + attribution, mirrored in _meta under com.sidneybissoli.medical/*, with a compact text footer for text-only clients. Multi-source responses (find_equivalent, validate_codes) carry one block per source; server-computed ranking fields are flagged as derived

  • Built-in caching for improved performance

  • Rate limiting to respect API limits

  • Detailed responses with rich formatting

  • Two transports: stdio (default; for Claude Desktop, IDE clients) and Streamable HTTP (the hosted Cloudflare Worker at https://medical.sidneybissoli.com/mcp, or your own instance of worker/)

📖 Article (in Portuguese): CID-10, CID-11 e o que muda para quem trabalha com dados do SUS — the V2008 structure in numbers, what the WHO transition tables are and are not, and the licences that differ between sources. Also published on the site, in Portuguese and English: sidneybissoli.com.

Who is this for?

This server is not a clinical-care decision tool — practicing clinicians have specialized assistants (UpToDate AI, OpenEvidence, EHR-integrated tools) for that. The actual audience is researchers, public-health analysts, clinical informatics developers, and educators who need programmatic access to authoritative terminology data.

If you're a...

Start with

Why

Biomedical researcher / bibliographer

mesh_search, mesh_descriptor, mesh_tree

MeSH is PubMed's indexing vocabulary; tree numbers let you traverse the controlled hierarchy programmatically

Public-health analyst (Brazil / SUS)

cid10_search, cid10_chapters, atc_classify

CID-10 V2008 is the Brazilian operational standard; ATC pairs cleanly with DataSUS prescription data

Public-health analyst (international)

icd11_search, icd11_lookup, icd11_chapters

WHO ICD-11 is the current international revision; chapters and hierarchy support pipeline classification

Clinical-informatics developer

loinc_search, loinc_details, find_equivalent

LOINC for lab/observation interoperability; cross-terminology search to scaffold new mappings

Educator / curriculum author

mesh_descriptor, icd11_lookup, rxnorm_search

Authoritative definitions, tree numbers, and drug term-types you can drop into self-checked exercises

What this server is not intended for — and what leaves your machine

  • It is not intended for clinical decision support. It retrieves what the official sources publish. It does not diagnose, recommend treatment or dose.

  • It is not designed to run offline. ICD-11, LOINC, RxNorm, MeSH and ATC are answered live by the public WHO and NLM APIs. Every query string you send is forwarded to those services. De-identify term lists before running them: no patient names, free-text notes or record identifiers. Two datasets are bundled and answered in-process, with no network call: CID-10 (DataSUS V2008) and the WHO ICD-10 → ICD-11 transition tables (map_icd10_to_icd11).

  • Credentials are not required on the hosted endpoint. https://medical.sidneybissoli.com/mcp has WHO credentials configured. WHO_CLIENT_ID/WHO_CLIENT_SECRET are needed only when you run the server yourself, and only for the 5 ICD-11 tools.

  • SNOMED CT is not served. It was retired in 2.0.0: no public Snowstorm host remains, SNOMED content needs a per-country license, and the off-by-default tools confused every catalog that listed this server. See SNOMED CT (retired in 2.0.0).

  • It is not OMOP-shaped. Results carry the source's own codes, not OMOP concept_ids, and there is no concept_ancestor traversal. If your output has to join against an OMOP CDM, use an OMOP vocabulary service; use this server for general terminology work.

  • Search is lexical, not semantic. find_equivalent and the *_search tools match words, not meanings (no embeddings).

  • Large batches are paced by the upstream rate limits (see API Rate Limits). Thousands of distinct terms take minutes to tens of minutes.

Reproducibility: which version answered

A crosswalk or a coded dataset is only meaningful against a stated vocabulary version. Two things record it:

  • terminology_versions lists the release each terminology is queried against. Call it at the start of a batch run and keep the output with your results. The ICD-11 release is pinned (default 2026-01, override with WHO_ICD11_RELEASE_ID), so a self-hosted run is repeatable until you change it.

  • The provenance block on every response (structuredContent.provenance) carries retrieved_at (the real extraction instant; a cache hit keeps the original fetch time), the source URL, the citation and the license. Its data_vintage field carries the version when the source exposes one:

    Source

    data_vintage in each response

    ICD-11

    the pinned WHO release (e.g. 2026-01)

    ICD-10 → ICD-11 tables

    the bundled WHO release (e.g. 2025-01)

    CID-10

    V2008

    LOINC, RxNorm, MeSH, ATC

    null, because these APIs do not state a release per response. Record terminology_versions + retrieved_at instead

Minimal batch log: one terminology_versions call at the start, plus the provenance of each result (source, data_vintage, retrieved_at).

Try the hosted instance (no install)

A public Cloudflare Workers deployment runs at:

https://medical.sidneybissoli.com/mcp

Connect via the MCP Inspector or any Streamable HTTP MCP client:

npx @modelcontextprotocol/inspector --transport streamable-http \
  --server-url https://medical.sidneybissoli.com/mcp

Or install via Smithery, which proxies the same endpoint through their gateway:

npx -y smithery mcp add sidneybissoli/medical-terminologies-mcp

The hosted instance has WHO credentials configured, so all 33 tools work without any setup on your side. For your own deployment (e.g. corporate network, different region, custom WHO credentials), see the Installation and Hosted on Cloudflare Workers sections below.

Installation

npm install -g medical-terminologies-mcp

Local Installation

npm install medical-terminologies-mcp

Configuration

Claude Desktop

Add to your Claude Desktop configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "medical-terminologies": {
      "command": "npx",
      "args": ["-y", "medical-terminologies-mcp"],
      "env": {
        "WHO_CLIENT_ID": "your-who-client-id",
        "WHO_CLIENT_SECRET": "your-who-client-secret"
      }
    }
  }
}

Environment Variables

Variable

Required

Description

WHO_CLIENT_ID

Yes¹

WHO ICD API Client ID

WHO_CLIENT_SECRET

Yes¹

WHO ICD API Client Secret

WHO_ICD11_RELEASE_ID

No

ICD-11 release to query (e.g. 2025-01, 2026-01). Default 2026-01.

LOG_LEVEL

No

pino log level (debug, info, warn, error, fatal). Default info.

¹ Required for ICD-11 tools. Get credentials at: https://icd.who.int/icdapi.

LOINC, RxNorm, MeSH, ATC and CID-10 need no configuration.

HTTP transport (hosted)

The server runs over stdio by default — that's what Claude Desktop and IDE clients expect. The Streamable HTTP transport is served by the Cloudflare Worker in worker/ (an instance of the maintainer's Fase 0 hosting template). The --http flag of the Node entry was removed in v1.6.0 — if you need a local HTTP endpoint, run the Worker locally:

npm ci && cd worker && npm ci
npm run dev     # wrangler dev on http://localhost:8787
# Inspector via HTTP
npx @modelcontextprotocol/inspector --transport streamable-http --server-url http://localhost:8787/mcp

Hosted endpoints (production and local alike):

  • POST /mcp — JSON-RPC over Streamable HTTP (the MCP protocol). Stateless mode: each request is independent.

  • GET /health — liveness probe returning { status, name, version, tool_count, uptime_s }.

  • GET /status — version + deploy metadata. GET /metrics — aggregated per-tool usage.

  • GET /stats and GET /stats/badge — public tool-call counter (since 2026-05-13) and its shields.io badge.

  • GET /.well-known/mcp/server-card.json — static server card for registry scanners.

  • CORS is permissive (*) so browser clients (e.g. the MCP Inspector web UI) can connect directly.

ChatGPT (Deep Research)

ChatGPT deep research (and company knowledge, and research workflows over the Responses API) only uses an MCP server that exposes exactly search and fetch — this server does, on top of the terminology tools. Point the connector at the hosted endpoint, no key required:

https://medical.sidneybissoli.com/mcp

search ranks the query across the bundled CID-10 (categories, subcategories, chapters), the terminology version records and a live fan-out to ICD-11, LOINC, RxNorm and MeSH (the same fan-out find_equivalent does; a source that fails is skipped) and returns { id, title, url }; fetch renders the document through the terminology's own lookup tool (cid10_lookup, icd11_lookup, loinc_details, rxnorm_concept, mesh_descriptor, terminology_versions) as readable Markdown with the canonical public page (WHO ICD browsers, loinc.org, RxNav, MeSH Browser), which is what ChatGPT cites. Both carry the same provenance block as every other tool — search one block per source that answered, like find_equivalent. In ChatGPT's developer mode (Settings → Security and login → Developer mode) any tool is callable — the terminology tools remain the ones to use for data.

Hosted on Cloudflare Workers (primary)

The production deployment is the Cloudflare Worker in worker/, config in worker/wrangler.jsonc, CI deploy in .github/workflows/deploy-worker.yml (auto-runs on every push to main).

To deploy your own instance:

npm ci && npm run build:worker-lib
cd worker && npm ci
npx wrangler login         # one-time, browser flow
npx wrangler deploy        # publishes to <name>.<account>.workers.dev
# Set ICD-11 secrets so those 5 tools work:
npx wrangler secret put WHO_CLIENT_ID
npx wrangler secret put WHO_CLIENT_SECRET

Note: worker/wrangler.jsonc pins the maintainer's account_id and custom domain route — remove/replace both for your own deployment.

Why Workers: zero cold start at the edge, $5/mo flat for 10M requests (free tier covers up to 100k req/day), and no VMs to size or restart. The template ships per-IP rate limiting and a usage-stats Durable Object; the upstream-facing cache/rate-limiter are per-isolate (PROGRESS.md Phase 11.9 Stage 2 tracks the KV/DO upgrade).

Listing on Smithery

After your Worker is live, register the URL on Smithery:

  1. Visit https://smithery.ai → Publish → MCP (or https://smithery.ai/new).

  2. Pick the URL submission path (Smithery deprecated container hosting in 2024 — URL is the supported flow now).

  3. Paste https://<your-worker>.workers.dev/mcp. Smithery's gateway scans for compliance and proxies traffic.

Available Tools (33)

Official Portuguese (pt-BR) content

The server never machine-translates terminology content — but several sources publish official translations, and the tools expose them:

  • CID-10 is natively Portuguese: cid10_search / cid10_lookup / cid10_chapter(s) serve the DataSUS V2008 dataset (the CID-10 the Brazilian SUS uses operationally).

  • ICD-11 in official Portuguese: pass language: "pt" to icd11_search / icd11_lookup to search and read WHO's official pt-BR linearization labels.

  • MeSH: pass language: "pt" to mesh_search / mesh_descriptor to request NLM's official translations where they exist.

If a source has no official translation for an entry, you get the source language back — never a machine translation.

ICD-11 Tools (5)

Tool

Description

Example

icd11_search

Search ICD-11 by term

query: "diabetes mellitus"

icd11_lookup

Get entity details by code/URI

code: "5A11"

icd11_hierarchy

Navigate parent/child relationships

code: "5A11"

icd11_chapters

List all ICD-11 chapters

-

icd11_postcoordination

Get postcoordination axes

code: "5A11"

LOINC Tools (4)

Tool

Description

Example

loinc_search

Search lab tests and observations

query: "glucose"

loinc_details

Get full LOINC code details

loinc_num: "2339-0"

loinc_answers

Answer list of a questionnaire item: LA code, text, order and score (PHQ-9 items: 0-3); empty for codes without a list, "not found" for unknown codes

loinc_num: "44250-9"

loinc_panels

Panel/form structure: member items in form order

loinc_num: "44249-1"

RxNorm Tools (5)

Tool

Description

Example

rxnorm_search

Search drugs by name

query: "metformin"

rxnorm_concept

Get drug concept details

rxcui: "6809"

rxnorm_ingredients

Get active ingredients

rxcui: "6809"

rxnorm_classes

Get therapeutic classes

rxcui: "6809"

rxnorm_ndc

Map between RxCUI and NDC

rxcui: "6809"

MeSH Tools (4)

Tool

Description

Example

mesh_search

Search MeSH descriptors

query: "hypertension"

mesh_descriptor

Get descriptor details

mesh_id: "D006973"

mesh_tree

Get tree hierarchy location

mesh_id: "D006973"

mesh_qualifiers

Get allowed qualifiers

mesh_id: "D006973"

Crosswalk Tools (4)

Tool

Description

Example

map_icd10_to_icd11

Authoritative ICD-10 → ICD-11 mapping via bundled WHO transition tables; returns primary code + chapter + URIs and any WHO-documented alternatives

icd10_code: "E11"

validate_codes

Batch-validate up to 50 codes across ICD-11, LOINC, RxNorm, MeSH, ATC, CID-10; returns per-code valid/invalid + display name

codes: [{terminology:"icd11",code:"5A11"}, …]

find_equivalent

Ranked unified search across terminologies: server-computed match_score/rank per candidate plus cross-terminology groups of lexically identical titles

term: "diabetes"

harmonize_terms

Batch-map up to 50 free-text terms to standard codes: diagnosis → ICD-11, drug → RxNorm (+ ATC classes), lab → LOINC. Per term: ranked candidates with match_score and match_type (exact / strong / needs_review), one provenance block per source. The term-first companion of validate_codes

terms: [{term:"type 2 diabetes",domain:"diagnosis"}, {term:"metformin",domain:"drug"}]

ATC Tools (3)

WHO Anatomical Therapeutic Chemical classification, served through NLM RxClass (free, no auth). The WHOCC base itself requires a paid subscription, but RxClass envelopes the same code/name pairs.

Tool

Description

Example

atc_classify

Drug name → ATC code(s)

drug_name: "metformin"

atc_lookup

ATC code (level 1-4) → name + level type

atc_code: "A10BA"

atc_members

ATC class → member drugs

atc_code: "A10BA"

CID-10 Tools (4)

Brazilian Portuguese translation of ICD-10 (DataSUS V2008). Bundled as a static dataset — no HTTP calls. The Brazilian SUS uses CID-10 V2008 operationally; for the international ICD-11 (current WHO revision), use the ICD-11 tools above.

Tool

Description

Example

cid10_search

Portuguese text search (diacritic-insensitive, AND between words; everyday words resolved to CID-10 wording, and the response says so)

query: "câncer de mama"

cid10_lookup

Code → official Portuguese name

code: "I21" or "A00.1"

cid10_chapters

List the 22 CID-10 chapters

-

cid10_chapter

Chapter detail with constituent groups

num: 9

Ask in your words, not the CID-10's. The CID-10 is worded in clinical Portuguese, and cid10_search matched your words against the code title as one verbatim phrase — so the everyday word returned nothing at all. Measured over the 14,496 categories and subcategories of the bundled V2008 dataset (2026-09-16), fixed since 1.12.0: every word must match (AND), and the everyday word is expanded to the CID-10's own (src/clients/cid10-vocabulary.ts, measured pairs only) — the response says so in vocabulary_notes, and zero results come with a way out.

you ask

hits before

the CID-10 writes

hits

câncer, câncer de mama

0

neoplasia maligna (da mama)

497, 12

ataque cardíaco

0

infarto

42

AVC

0

acidente vascular cerebral

11

pressão alta

0

hipertensão

44

dor de cabeça

0

cefaleia

10

suicídio

0

lesão autoprovocada

167

atropelamento

0

pedestre traumatizado

97

aids

0

doença pelo HIV

45

pedra nos rins, convulsão, tabagismo, maconha, crack, obeso, cachorro

0

calculose, convulsões, fumo, canabinóides, cocaína, obesidade, provocado por cão

19, 41, 17, 12, 13, 6, 11

What the V2008 dataset does not carry stays out and still returns zero — covid (U07.1 is from 2020), zika — because an alias for a code that does not exist promises what the source does not have. The same table feeds the Deep Research search index.

Versioning Tools (2)

Surface what version of each terminology this server queries against today — useful when running batch validation against a pinned release or when investigating an unexpected lookup miss after an upstream update.

Tool

Description

Example

terminology_versions

List all 8 supported terminologies with current version, release date, publisher, source URL, and update cadence

-

terminology_diff

Report what diff data is available between two versions of a terminology (real cross-revision stats for ICD-10 → ICD-11; guidance otherwise)

terminology: "icd10-icd11"

ChatGPT Deep Research (2)

The OpenAI Deep Research contract — the only two tools without a terminology prefix (names fixed by OpenAI). See ChatGPT (Deep Research) above.

Tool

Description

Example

search

Searches the catalog (CID-10, ICD-11, LOINC, RxNorm, MeSH, terminology versions) and returns { id, title, url } ranked by relevance

query: "myocardial infarction"

fetch

Returns the full document of an id from search ({ id, title, text, url, metadata }), rendered by the terminology's lookup tool

id: "cid10:I21.0"

Example Outputs

The samples below are the actual formatted output the tools produce — the text body of the CallToolResult. Tools also return a structuredContent object matching each tool's outputSchema for programmatic consumers.

## LOINC Search Results for "glucose"

Found 1024 total results (showing 3):

1. **74790-7** - Glucose challenge (hydrogen breath test) panel - Exhaled gas
   Component: Glucose challenge panel | Method: -

2. **104708-3** - Deprecated Estimated average glucose [Moles/volume] in Blood
   Component: Estimated average glucose | Property: SCnc

3. **97510-2** - Glucose measurements in range out of Total glucose measurements during reporting period
   Component: Glucose measurements in range/Total glucose measurements | Property: NFr | Method: Calculated

total_count (1024) reflects every match in the NLM Clinical Tables index, not just the page returned. Bump max_results (max 50) to see canonical codes like 2339-0 (Glucose [Mass/volume] in Blood); the API's relevance ranking puts panels and derived measurements above plain blood-glucose at small page sizes.

rxnorm_ingredients — rxcui: "6809" (metformin)

# Ingredients for RxCUI 6809

Found 18 ingredient(s):

| RxCUI | Name | Type |
|-------|------|------|
| 6809 | metformin | Single Ingredient |
| 1007411 | chlorpropamide / metformin | Multiple Ingredient |
| 1043562 | metformin / saxagliptin | Multiple Ingredient |
| 1243019 | linagliptin / metformin | Multiple Ingredient |
| 1486436 | dapagliflozin / metformin | Multiple Ingredient |
| 1545149 | canagliflozin / metformin | Multiple Ingredient |
| 1664314 | empagliflozin / metformin | Multiple Ingredient |
| 729717  | metformin / sitagliptin | Multiple Ingredient |
| ...     | (10 more combinations)   | Multiple Ingredient |

For an RxCUI that is itself an ingredient (TTY=IN), the tool returns that ingredient plus every multi-ingredient (TTY=MIN) concept that includes it. Use this to enumerate combination products built around a substance.

mesh_descriptor — mesh_id: "D006973" (Hypertension)

# Hypertension
MeSH ID: D006973

## Scope Note

Persistently high systemic arterial BLOOD PRESSURE. Based on multiple readings (BLOOD PRESSURE DETERMINATION), hypertension is currently defined as when SYSTOLIC PRESSURE is consistently greater than 140 mm Hg or when DIASTOLIC PRESSURE is consistently 90 mm Hg or more.

## Tree Numbers

- C14.907.489

## Concepts

- Hypertension *(preferred)*

## Allowed Qualifiers

35 qualifier(s) allowed. Use mesh_qualifiers for details.

The scope note comes from the descriptor's preferred concept, not its annotation field (which is an indexer-facing note). Tree numbers are the navigable path into MeSH's controlled hierarchy — C14.907.489 places Hypertension under Cardiovascular Diseases → Vascular Diseases.

Common Workflows

  • ICD-11 lookup: icd11_search with a clinical term → pick the result → icd11_lookup with the code for full details, or icd11_hierarchy to walk parents/children.

  • Drug pipeline: rxnorm_search for a brand or generic name → rxnorm_concept for the canonical record → rxnorm_ingredients and rxnorm_classes for downstream analysis.

  • Harmonize a column of free-text terms: terminology_versions once at the start → harmonize_terms in batches of up to 50 (each term with its domain) → accept exact, spot-check strong, send needs_review to a person → keep each row's provenance with the crosswalk. Write lab terms with specimen and property ("glucose serum"): a bare "glucose" matches over a thousand LOINC codes.

  • Cross-terminology scaffolding: find_equivalent with a clinical term searches ICD-11, LOINC, RxNorm and MeSH in one call. Use it to bootstrap mappings; the pairwise map_* tools refine them.

  • ICD-10 → ICD-11 (authoritative): map_icd10_to_icd11 reads the bundled WHO transition tables. It returns the primary ICD-11 code plus any WHO-documented alternatives, and null (never a guess) when the ICD-10 category is not in the table.

SNOMED CT (retired in 2.0.0)

Until 1.18.x this server shipped five SNOMED CT tools (snomed_search, snomed_concept, snomed_hierarchy, snomed_descriptions, snomed_ecl) plus map_snomed_to_icd10, all off by default behind ENABLE_SNOMED_TOOLS, and map_loinc_to_snomed (guidance only). Version 2.0.0 removed all seven, the Snowstorm client and the flag, and snomed is no longer an accepted value of find_equivalent, validate_codes, terminology_versions or terminology_diff (a request naming it gets a validation error listing the accepted values).

Why: the public IHTSDO Snowstorm host behind the tools has returned HTTP 410 since 2026-05; SNOMED CT content needs a license that depends on the user's country; usage was zero; and the half-present terminology misled every third-party catalog that described this server.

If you need SNOMED CT: pacharanero/sct serves it locally from your own licensed release, and FHIR terminology servers (e.g. tx.fhir.org, a public HL7 test server; CSIRO Ontoserver) expose $lookup/$expand — under your own SNOMED license.

Terminology Licenses

The MIT license covers the server code and server-maintained metadata only — not the terminology content served through it, and not the two bundled datasets (cid10.json, icd10-to-icd11.json), which remain under their own terms. The consolidated notice ships with the package as NOTICE.md; every tool response carries a per-source provenance block with the applicable license.

ICD-11 (WHO)

ICD-11 content is provided under the Creative Commons Attribution-NoDerivatives 3.0 IGO license (CC BY-ND 3.0 IGO), per the ICD-11 Terms of Use and License Agreement.

  • Required citation: "International Classification of Diseases, Eleventh Revision (ICD-11), World Health Organization (WHO) 2019 https://icd.who.int/browse11. Licensed under the Creative Commons Attribution-NoDerivatives 3.0 IGO licence (CC BY-ND 3.0 IGO)."

  • This server always serves ICD-11 codes and titles together with their URIs, verbatim; non-English labels are WHO's own official translations (never machine-translated)

  • WHO may terminate the license at any time by notice (§4.7)

  • API access requires registration at https://icd.who.int/icdapi

WHO ICD-10 → ICD-11 transition tables (bundled)

Format conversion (TSV → JSON, content unaltered) of the tables WHO publishes within the ICD-11 release. © World Health Organization, under the ICD-11 Terms of Use — not under this project's MIT license. WHO's guidance: the tables show correspondence between revisions and "are not intended for directly converting data from one revision to the other."

CID-10 V2008 (DataSUS / CBCD, bundled)

© World Health Organization; Brazilian Portuguese translation © CBCD / Faculdade de Saúde Pública da USP; electronic files published by DataSUS (Ministério da Saúde do Brasil). DataSUS/CBCD permission: developers may use the files with due credit and at no charge — this server serves them free with credit in every response. Not under this project's MIT license.

LOINC

This material contains content from LOINC (http://loinc.org). LOINC is copyright © Regenstrief Institute, Inc. and the Logical Observation Identifiers Names and Codes (LOINC) Committee and is available at no cost under the license at http://loinc.org/license. LOINC® is a registered United States trademark of Regenstrief Institute, Inc.

  • Served via the free NLM Clinical Tables API; every code comes with its official display name

  • Terms with third-party copyright are served with their notice passed through verbatim

RxNorm

RxNorm is produced by the U.S. National Library of Medicine; the RxNav APIs serve non-proprietary, public-domain RxNorm content free of charge.

This product uses publicly available data from the U.S. National Library of Medicine (NLM), National Institutes of Health, Department of Health and Human Services; NLM is not responsible for the product and does not endorse or recommend this or any other product.

ATC (via NLM RxClass)

ATC classification © WHO Collaborating Centre for Drug Statistics Methodology (https://atcddd.fhi.no/), retrieved via NLM RxClass and served verbatim. This server never redistributes the WHOCC ATC/DDD index.

MeSH

MeSH is a U.S. government work served under the NLM Terms and Conditions. Courtesy of the U.S. National Library of Medicine.

Surface fingerprint, checkable from the registry

Every release publishes, in its MCP Registry entry, the sha256 of the surface this version serves (initialize, tools, resources, prompts) and which methods answer without a credential. A surface change without a version bump fails the build; the fingerprint in the registry lets a client check the same thing on its own side. Canonical form and procedure: SPEC.md of @sbissoli/mcp-surface. To check it yourself (Node 18+, no dependencies):

curl -sO https://raw.githubusercontent.com/SidneyBissoli/mcp-br-commons/main/packages/mcp-surface/exemplos/verify.mjs
node verify.mjs io.github.SidneyBissoli/medical-terminologies-mcp

API Rate Limits

This server implements rate limiting to respect API providers:

API

Rate Limit

WHO ICD-11

5 requests/second

NLM (LOINC, MeSH)

10 requests/second

RxNorm

20 requests/second

Development

Building from source

git clone https://github.com/SidneyBissoli/medical-terminologies-mcp.git
cd medical-terminologies-mcp
npm install
npm run build

Running locally

npm start

Testing with MCP Inspector

npx @modelcontextprotocol/inspector node dist/index.js

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository

  2. Create your feature branch (git checkout -b feature/AmazingFeature)

  3. Commit your changes (git commit -m 'Add some AmazingFeature')

  4. Push to the branch (git push origin feature/AmazingFeature)

  5. Open a Pull Request

Author

Sidney da Silva Pereira Bissoli

License

This project is licensed under the MIT License - see the LICENSE file for details.

Note: While this software is MIT licensed, the medical terminologies accessed through it have their own licenses (see Terminology Licenses above).

Acknowledgments

Support

If you encounter any issues or have questions:

  • Open an issue on GitHub

  • Check existing issues for solutions


Made with love for the medical informatics community

Available Tools

33 tools
atc_classifyATC Classification for a DrugA
Read-onlyIdempotent
Inspect

Look up the WHO ATC (Anatomical Therapeutic Chemical) classification(s) for a drug by name.

Use this tool to:

  • Find the ATC code for a medication (e.g., "metformin" → A10BA02)

  • Identify the therapeutic and pharmacological class hierarchy

  • Cross-reference drugs with their international ATC codes

Returns one entry per ATC code the drug belongs to. A single-ingredient drug typically maps to one substance-level code; combination products map to multiple. ATC codes are international (WHO Collaborating Centre); this tool retrieves them via NLM RxClass.

Input is a drug NAME (brand or generic, English/US naming as in RxNorm). A name RxNorm does not recognize, or a drug without an ATC mapping, returns an empty matches list with an explanatory note — not an error; try the generic name, or resolve the name first with rxnorm_search.

Which ATC tool: start here when you have a drug name; use atc_lookup when you already have a class code (level 1-4, e.g. "A10BA") and want its name; use atc_members to list the drugs inside a class.

ParametersJSON Schema
NameRequiredDescriptionDefault
drug_nameYesDrug name to classify (brand or generic, e.g., "metformin")

Output Schema

ParametersJSON Schema
NameRequiredDescription
matchesYes
drug_nameYes
provenanceYesProvenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license
attributionYesCanonical source URLs of this response (attribution list)

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/openWorld/destructive=false, so safety is covered. The description adds real behavioral context beyond that: one entry per ATC code, single-ingredient vs combination cardinality, the NLM RxClass provenance, and critically that unrecognized names return an empty matches list with a note rather than an error.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then structured bullets for use cases, return shape, input format, and sibling routing. Slightly long, but each block carries distinct information and nothing is redundant with the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description needn't enumerate return fields, yet it still explains the return shape (one entry per code, empty matches case) and the input contract. For a one-parameter lookup tool it is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single parameter, so the baseline is 3. The description goes further by specifying that input is a drug NAME, that brand or generic English/US RxNorm naming is accepted, and that the generic name is the better fallback — meaning beyond the schema's example.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (look up) and resource (WHO ATC classification) plus a concrete example mapping ("metformin" → A10BA02). It also explicitly distinguishes itself from the two sibling ATC tools by name, so an agent can route without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit 'Use this tool to' list and a dedicated 'Which ATC tool' paragraph naming the alternatives (atc_lookup for class codes, atc_members for drugs in a class) with the condition that selects each. It also handles the failure path by pointing to rxnorm_search.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

atc_lookupATC Code DetailsA
Read-onlyIdempotent
Inspect

Look up an ATC code at level 1-4 to get its name and hierarchy level.

Use this tool to:

  • Resolve an ATC code (e.g., "A10BA") to its class name ("Biguanides")

  • Confirm a code exists in the current ATC index

  • Identify the level (anatomical / therapeutic / pharmacological / chemical)

Accepts codes 1-5 characters long: "A" (anatomical), "A10" (therapeutic), "A10B" (pharmacological), "A10BA" (chemical). Substance-level codes (7 chars, e.g., "A10BA02") are not exposed by this endpoint — use atc_classify with the drug name to retrieve the substance code.

ParametersJSON Schema
NameRequiredDescriptionDefault
atc_codeYesATC code at level 1-4 (1-5 chars). Substance-level codes (7 chars, e.g., A10BA02) are not exposed by this endpoint — use atc_classify with the drug name instead.

Output Schema

ParametersJSON Schema
NameRequiredDescription
foundYes
detailsYes
atc_codeYes
provenanceYesProvenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license
attributionYesCanonical source URLs of this response (attribution list)

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, covering the safety profile. The description adds the key behavioral constraint that substance-level codes are not exposed by the endpoint and points to the alternative, which is genuinely useful beyond the annotations, though return-format details are omitted (and covered by the output schema).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core purpose, then uses a short bulleted list for use cases and code-length guidance. Slightly long and mildly redundant with the schema's substance-code note, but each element is purposeful and skimmable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description needn't explain return values; it covers purpose, use cases, accepted code formats, and the notable exclusion with the correct alternative. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already includes the pattern and the substance-code note, so the baseline is 3. The description still adds value by mapping code lengths to ATC levels (A=anatomical, A10=therapeutic, A10B=pharmacological, A10BA=chemical), which enriches the single parameter's semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (look up an ATC code) and its scope (level 1-4) yielding name and hierarchy level. The description makes clear it is distinct from atc_classify, which handles substance codes, so an agent can route without opening sibling schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly enumerates three use cases (resolve code, confirm existence, identify level) and names the alternative atc_classify for the excluded 7-char substance-level codes. This is a clear when-to-use and when-to-use-something-else statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

atc_membersATC Class MembersA
Read-onlyIdempotent
Inspect

List the drugs (substances) that belong to an ATC class.

Use this tool to:

  • Enumerate all members of a therapeutic class (e.g., "A10BA" → metformin, phenformin)

  • Build a list of drugs sharing a pharmacological mechanism

  • Explore an ATC subtree at any level

Each member includes its substance-level (7-char) ATC code via source_atc_code, useful for disambiguation when the queried class is at level 1-4. RxNorm's catalog is US-centric; the ATC class names and codes themselves are international.

ParametersJSON Schema
NameRequiredDescriptionDefault
atc_codeYesATC code at any level. Higher levels (1-4) return all member substances; level 5 returns the single substance.

Output Schema

ParametersJSON Schema
NameRequiredDescription
membersYes
atc_codeYes
provenanceYesProvenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license
attributionYesCanonical source URLs of this response (attribution list)

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely new context beyond that: the US-centric RxNorm catalog vs. international ATC names/codes, and the fact that each member carries a 7-char source_atc_code useful for disambiguating level 1-4 queries. Return format details are left to the output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in one sentence, followed by scannable bullets and a short caveat paragraph. There is mild redundancy between the opening line and the first bullet, but nothing wasteful enough to hurt usability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With annotations covering safety and an output schema covering return values, the description only needs to supply purpose, routing, and domain caveats, which it does. Minor omissions such as result-size or pagination behavior for large subtrees keep it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains the atc_code pattern and the level 1-4 vs. level 5 behavior; the description largely restates that ('explore an ATC subtree at any level'). No extra syntax, format, or edge-case guidance is added, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence gives a precise verb (List) and resource (drugs/substances belonging to an ATC class), and the bullets clarify that this is an enumeration/hierarchy-traversal operation rather than a code lookup or classification, which is what siblings like atc_lookup and atc_classify do. An agent can route correctly without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Use this tool to:' bullets give three concrete scenarios (enumerate class members, find drugs sharing a mechanism, explore a subtree at any level), which is clear positive guidance. It stops short of naming alternatives or stating when not to use it (e.g., vs. atc_lookup for a single code's name), so it lands at 4 rather than 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cid10_chapterCapítulo da CID-10A
Read-onlyIdempotent
Inspect

Get one CID-10 chapter and its constituent groups (e.g., "Chapter IX → I00-I02 Febre reumática aguda, I05-I09 Doenças reumáticas crônicas do coração, ...").

Use this tool to:

  • Drill from a chapter into its groups (code ranges with Portuguese titles)

  • Build hierarchical browsers

  • Find which group contains a code range

Provide the chapter number num as an integer 1-22 (chapter I = 1, IX = 9). Numbers outside 1-22 are rejected with a validation error. Returns the chapter (title and code range) plus ALL its groups in one response — no pagination; the 22 chapters hold 275 groups in total. Answered locally from the bundled CID-10 V2008; no network call.

Which CID-10 tool: use cid10_chapters first if you do not know the chapter number (it lists all 22 with code ranges); use cid10_lookup for one specific code and cid10_search to find codes by Portuguese text. For the international ICD-11, use icd11_chapters.

ParametersJSON Schema
NameRequiredDescriptionDefault
numYesChapter number (1-22). CID-10 V2008 has 22 chapters.

Output Schema

ParametersJSON Schema
NameRequiredDescription
numYes
foundYes
groupsYes
chapterYes
provenanceYesProvenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license
attributionYesCanonical source URLs of this response (attribution list)

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: out-of-range input behavior (rejected with a validation error), no pagination and full group return, total dataset size (275 groups), and that results come from a bundled local V2008 snapshot with no network call. The 'no network call' statement sits in mild tension with openWorldHint=true, which is why this is a 4 rather than a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Somewhat long with bulleted use cases, but it is front-loaded with the core purpose and the 'Which CID-10 tool' routing block carries high value; no sentence is filler, though the routing paragraph could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return-shape detail is not required, and the description still covers purpose, parameter semantics, failure behavior, data source, and disambiguation against five sibling tools. Nothing needed to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description adds real meaning: the Roman-numeral-to-integer mapping (chapter I = 1, IX = 9) and the validation behavior for values outside 1-22.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get one CID-10 chapter and its constituent groups') with a concrete example of the returned content. It clearly distinguishes itself from cid10_chapters, cid10_lookup and cid10_search by scope (chapter-level drill-down).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names when to use it (drill into groups, build hierarchical browsers, find the group for a code range) and routes to alternatives: cid10_chapters when the number is unknown, cid10_lookup for a single code, cid10_search for Portuguese text, icd11_chapters for ICD-11.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cid10_chaptersCapítulos da CID-10A
Read-onlyIdempotent
Inspect

List the 22 chapters of CID-10 with their code ranges and Portuguese titles.

Use this tool to:

  • See the top-level structure of CID-10 (chapters I-XXII, e.g., "I. Algumas doenças infecciosas e parasitárias", "IX. Doenças do aparelho circulatório")

  • Map a code to its chapter by code range (e.g., I00-I99 → chapter IX)

  • Build a navigable table of contents for downstream tooling

Returns 22 entries — CID-10 V2008 has not been updated since 2008.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
chaptersYes
provenanceYesProvenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license
attributionYesCanonical source URLs of this response (attribution list)

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered structurally. The description adds real behavioral context beyond that: it commits to a fixed result count ('Returns 22 entries') and discloses data staleness ('CID-10 V2008 has not been updated since 2008'), which is exactly the kind of trait annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the one-line purpose, then a scannable bulleted usage block, then a single closing fact about result size and vintage. Every sentence carries information and nothing is repeated from the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value shape need not be described, and the description still gives the entry count. Purpose, usage, and the important version caveat are all present; nothing an agent needs to invoke a zero-argument listing tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so per the rubric the baseline is 4. There is no parameter surface for the description to clarify, and it correctly does not invent any; the content it does provide is about output, not input.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the 22 chapters of CID-10') plus the scope of what comes back (code ranges, Portuguese titles). The phrase 'top-level structure' and '22 chapters' cleanly separates it from the singular cid10_chapter and from cid10_lookup/search, so an agent can pick it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

A dedicated 'Use this tool to' block gives three concrete use cases (see top-level structure, map a code to its chapter, build a table of contents), which is clear context for selection. It does not, however, explicitly name the alternative tool (e.g., cid10_chapter) or state when NOT to use this one, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cid10_lookupConsultar Código CID-10A
Read-onlyIdempotent
Inspect

Look up a specific CID-10 code and return its Portuguese name.

Use this tool to:

  • Resolve a code to its Brazilian description ("I21" → "Infarto agudo do miocárdio")

  • Confirm a 3-char category or 4-char subcategory exists in CID-10

  • Retrieve gender / cause-of-death restriction flags when applicable

Accepts both dotted ("A00.1") and undotted ("A001") forms; returns the canonical display.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesCID-10 code (e.g., "A00", "A00.1", "A001", "I21"). Dotted and undotted forms both accepted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
hitYes
codeYes
foundYes
provenanceYesProvenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license
attributionYesCanonical source URLs of this response (attribution list)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and openWorld, so the safety profile is covered structurally. The description adds genuine behavioral context — it accepts both dotted and undotted forms and returns the canonical display, plus gender/cause-of-death flags — but does not describe error/not-found behavior or lookup limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then efficiently bulleted and closed with the format note. Slightly redundant at the end, since the dotted/undotted acceptance is already stated in the schema parameter description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not explain return values, and it still covers scope, format flexibility, and the extra flags surfaced. Nothing material for a correct single-parameter lookup is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'code' parameter is already fully documented with a pattern and format examples. The description's note about dotted/undotted acceptance and the canonical display repeats what the schema says, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('look up'), a precise resource ('a specific CID-10 code'), and the return ('its Portuguese name'). The word 'specific' plus the code-level granularity clearly separates it from sibling search/chapter tools like cid10_search and cid10_chapter without needing to name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The three 'Use this tool to:' bullets give concrete when-to-use scenarios (resolve a code to a Brazilian description, confirm a category/subcategory exists, retrieve restriction flags). There are no explicit exclusions or named alternatives ('use cid10_search if you only have free text'), so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fetchDeep Research DocumentA
Read-onlyIdempotent
Inspect

Returns the full document for an id obtained from search, as { id, title, text, url, metadata }: text is the readable content (Markdown) and url the canonical public page to cite.

Companion of search in the OpenAI Deep Research contract, over the medical terminologies (CID-10 categories and chapters, ICD-11, LOINC, RxNorm, MeSH, terminology version records) catalog. Only ids returned by search are valid; an unknown id returns an error. The terminology tools (icd11_*, cid10_*, loinc_*, rxnorm_*, mesh_*, atc_*, map_*, find_equivalent, validate_codes) remain the tools for data queries.

Behavior: read-only and idempotent — a live GET against the public source when the document needs it.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesIdentifier of a document returned by `search`

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesUnique identifier of the document on this server; what `fetch` takes
urlYesCanonical public URL of the document — ChatGPT's citation depends on it
textYesFull readable content of the document (Markdown)
titleYesHuman-readable title of the document
metadataNoAdditional key/value pairs about the document (kind, source, period…)
provenanceYesProvenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license
attributionYesCanonical source URLs of this response (attribution list)

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, open-world and non-destructive traits, so the bar is lower; the description still adds value with the error behavior on unknown ids and the fact that it performs a live GET against the public source. It stops short of describing latency, caching, or failure modes when the source is unavailable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the return contract, then placement, then behavior, using bold labels for scannability. Slightly heavy with the parenthetical enumeration of terminology families, but every section still carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Return fields, validation rule, sourcing behavior, and the boundary against sibling terminology tools are all covered, and an output schema exists so return-value detail need not be expanded further. Nothing essential to correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single `id` parameter, so the baseline is 3. The description adds a real constraint beyond the schema: the id must originate from `search`, and anything else errors — meaningful semantics the schema text does not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns the full document for an id') and enumerates the returned fields, so the agent knows exactly what comes back. It also positions itself against the many sibling terminology tools by declaring itself the companion of `search` in the Deep Research contract.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit preconditions ('Only ids returned by `search` are valid; an unknown id returns an error') and an explicit exclusion routing data queries to the `icd11_*`, `loinc_*`, `rxnorm_*`, etc. tools. When-to-use and when-not-to-use are both stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_equivalentFind Equivalents Across TerminologiesA
Read-onlyIdempotent
Inspect

Ranked unified search for equivalent terms across multiple medical terminologies.

Use this tool to:

  • Find the same concept in different coding systems

  • Compare how terminologies represent a concept

  • Support terminology mapping and data integration

Searches across: ICD-11, LOINC, RxNorm, and MeSH. Set target_terminologies to limit which are searched, or set source_terminology to exclude one (e.g. when you already have a code from that terminology and want equivalents elsewhere). The two combine: source is subtracted from targets. limit caps candidates per terminology (default 5, max 10).

Every candidate carries match_score (lexical similarity to the search term, 0-1) and rank (global position across all searched terminologies) — both computed by this server, since upstreams don't expose comparable relevance scores. Candidates from different terminologies whose titles are lexically identical are clustered in groups — a strong same-concept signal (absence of a group is NOT evidence of non-equivalence).

Searches upstreams in English. For official pt-BR content, use the dedicated tools: icd11_search/mesh_search accept language: "pt", and cid10_search is natively Portuguese.

ParametersJSON Schema
NameRequiredDescriptionDefault
termYesMedical term to search (e.g., "diabetes", "aspirin")
limitNoMaximum candidates returned PER terminology (1-10, default 5). This is a cap, not a page: the live fan-out has no stable cursor across five upstreams, so raise the limit instead of paging.
source_terminologyNoIf set, this terminology is excluded from the search. Use this when the term came from this terminology and you want equivalents in the others. Combines with target_terminologies by subtraction (source is removed from the target list).
target_terminologiesNoLimit the search to these terminologies. If omitted, all five are searched.

Output Schema

ParametersJSON Schema
NameRequiredDescription
termYes
groupsYes
rankingYes
resultsYes
provenanceYesOne provenance block per upstream source that contributed to this response (contract v1.1; licenses are never merged; each block carries the origin diagnostics of ITS source)
attributionYesCanonical source URLs of this response (attribution list)
source_terminologyYes
searched_terminologiesYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover safety (readOnly, idempotent, openWorld, non-destructive), and the description adds non-obvious traits: match_score/rank are server-computed because upstreams lack comparable relevance, lexical-title clustering in groups with the caveat that absence of a group is not evidence of non-equivalence, English-only searching, and no stable cursor for paging. This is well beyond structured-field coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose followed by a scannable use-case list and behavioral notes. Well structured, though the source/target subtraction rule is stated twice (body and schema), adding minor redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained, yet the description still clarifies the two computed fields and the grouping semantics that an agent must interpret correctly. Nothing material is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3; the description adds real meaning beyond it — limit is a cap not a page (with the reason), and source_terminology combines with target_terminologies by subtraction. The only gap is that some overlap exists between the description and the schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('ranked unified search for equivalent terms across multiple medical terminologies') and enumerates the exact terminologies searched. An agent can distinguish it from siblings like harmonize_terms or map_icd10_to_icd11 without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Three explicit use-case bullets, plus the exclusion mechanism via source_terminology and a clear redirect to dedicated tools for pt-BR content (icd11_search, mesh_search, cid10_search). When-to-use and when-to-use-something-else are both covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

harmonize_termsHarmonize Free-Text Terms to Standard CodesA
Read-onlyIdempotent
Inspect

Map a LIST of free-text clinical terms to standard codes in one call, with ranked candidates and a confidence label for each — the building block of a reviewable crosswalk.

Use this tool to:

  • Harmonize a column of diagnoses, drugs or lab names from a dataset to ICD-11 / RxNorm (+ ATC) / LOINC

  • Triage which terms map cleanly (exact / strong) and which need a person (needs_review)

  • Build a crosswalk you can audit: every row keeps its candidates, scores and sources

Give each term its domain: diagnosis → ICD-11; drug → RxNorm concepts (ingredients first) plus the ATC classes of the term; lab → LOINC. Up to 50 terms per call — a longer list is refused with a validation error: split it into batches of 50. Repeated term+domain pairs are looked up once. max_candidates keeps 1-5 per term (default 3).

Every candidate carries match_score (lexical, 0-1, the find_equivalent formula) and match_type: exact = same words after normalization; strong = every term word is in the title (or the matched synonym) and score ≥ 0.85; needs_review = anything else. A one-word term is exact or needs_review, never strong ("Tylenol" vs "Tylenol PM" is a different product). Synonyms, abbreviations ("MI", "HbA1c") and misspellings land in needs_review or no_candidates — the label errs toward asking a person. Candidates sharing no word with the term are dropped, as are LOINC codes named "Deprecated". For diagnoses, a candidate is also scored against the synonyms WHO matched (e.g. "hypertension NOS" for Essential hypertension), reported in matched_label; postcoordinated clusters (codes with "/" or "&") are left out — build those with icd11_postcoordination. Lab names are ambiguous without specimen and property: "glucose" matches over a thousand LOINC codes, so write "glucose serum" or expect needs_review. One failed lookup does not fail the batch: that row comes back with status "error".

Terms are searched in English and sent to the WHO and NLM APIs — de-identify the list first. For Brazilian Portuguese diagnoses use cid10_search; to check codes you already have, use validate_codes; for one term across every terminology, use find_equivalent. Record the vocabulary versions with the provenance blocks (one per source) and terminology_versions.

ParametersJSON Schema
NameRequiredDescriptionDefault
termsYesTerms to harmonize, each with its domain. Up to 50 per call; repeated term+domain pairs are looked up once.
max_candidatesNoCandidates kept per term, best first (1-5, default 3).

Output Schema

ParametersJSON Schema
NameRequiredDescription
totalYesTerms submitted.
countsYes
rankingYes
resultsYesOne entry per submitted term, in request order.
provenanceYesOne provenance block per upstream source that contributed to this response (contract v1.1; licenses are never merged; each block carries the origin diagnostics of ITS source)
attributionYesCanonical source URLs of this response (attribution list)
unique_lookupsYesDistinct term+domain pairs actually looked up.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (read-only, idempotent, open-world, non-destructive), and the description adds genuine behavioral context beyond them: the 50-term hard limit with a validation error, dedup of repeated term+domain pairs, per-row error survival ('one failed lookup does not fail the batch'), candidate-dropping rules, match_type/score definitions, and an explicit de-identification warning since terms go to WHO/NLM APIs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose, then a scannable 'Use this tool to' list, then dense behavior rules. Almost every sentence carries a distinct rule, but the paragraph on match_type/matched_label and LOINC ambiguity is long enough that strong reference content competes with quick-select scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter batch tool there is an output schema, so return-shape explanation is not needed, and the description still covers limits, error semantics, filtering rules, confidence labeling, and provenance guidance (provenance blocks + terminology_versions). Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds real meaning: the domain routing rules (diagnosis→ICD-11, drug→RxNorm ingredients first plus ATC, lab→LOINC), the batch ceiling, and max_candidates semantics/default. It does not restate the schema's field-level descriptions, which is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (harmonize/map) and resource (a list of free-text clinical terms) with explicit scope: batch mapping to ICD-11/RxNorm+ATC/LOINC with ranked candidates and confidence labels. It distinguishes itself from siblings by naming find_equivalent, cid10_search, validate_codes and icd11_postcoordination as different jobs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use bullets (harmonize a column, triage clean vs needs_review, build an auditable crosswalk) plus named alternatives with their selecting conditions: one term across all terminologies → find_equivalent; Brazilian Portuguese → cid10_search; existing codes → validate_codes; postcoordinated clusters → icd11_postcoordination.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

icd11_chaptersList ICD-11 ChaptersA
Read-onlyIdempotent
Inspect

List all ICD-11 chapters (top-level categories) of the pinned WHO release.

Use this tool to:

  • Get an overview of ICD-11 structure

  • Find which chapter covers a body system or condition type

  • Get chapter URIs to drill down with icd11_hierarchy (direction 'children')

Returns 28 entries in one response, no pagination — chapters 01-26 plus the supplementary sections V (functioning) and X (extension codes) — each with number, code, title and URI. Each chapter is fetched separately from WHO; if one fetch fails, that entry keeps its URI and carries an error instead of a title, and the rest still come back. Set language for WHO's official translations (e.g. language: "pt"); the result is cached, so repeated calls are cheap.

When NOT to use: to find a specific disease, use icd11_search; for the Brazilian CID-10 (ICD-10) chapters, use cid10_chapters.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoLanguage code (default: en). Returns the source's OFFICIAL translation when it exists (e.g. 'pt' for official Portuguese); content is never machine-translated.en

Output Schema

ParametersJSON Schema
NameRequiredDescription
chaptersYes
provenanceYesProvenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license
attributionYesCanonical source URLs of this response (attribution list)

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only, idempotent, non-destructive profile, yet the description adds substantial behavior: exactly 28 entries, no pagination, the composition of chapters (01-26 plus V and X), and crucially the partial-failure semantics where a failed fetch keeps its URI and carries an `error` while the rest succeed. It also discloses official-vs-machine translation and caching, well beyond what annotations convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, organized into scannable use-case bullets and a use-not clause, and every sentence carries actionable information with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description still usefully previews the entry shape (number, code, title, URI) and error handling, so an agent knows exactly what to expect. Nothing needed to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single enum parameter whose description already explains official translations. The description reinforces this with a concrete example (language: 'pt') and adds that results are cached, modest but real added value over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List all ICD-11 chapters') and clarifies scope ('top-level categories') and version ('pinned WHO release'). It is clearly distinguishable from icd11_search and cid10_chapters, which are named as alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit 'Use this tool to:' list of scenarios plus an explicit 'When NOT to use' clause routing to icd11_search and cid10_chapters. Both the when and the when-not are spelled out with named alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

icd11_hierarchyBrowse ICD-11 HierarchyA
Read-onlyIdempotent
Inspect

Navigate the ICD-11 hierarchy to find parent or child entities.

Use this tool to:

  • Find broader categories (parents) of a condition

  • Find specific subtypes (children) of a condition

  • Understand the classification structure

Name the entity by code (a leaf code like "5A11", or a block range like "5A10-5A2Y" — blocks come back from 'parents' with an empty code and a code_range) or by uri (the URI any previous answer returned). Direction 'parents' returns ancestor categories, 'children' returns subcategories. ICD-10 codes (like "E11") are not ICD-11 codes: convert them first with map_icd10_to_icd11.

ParametersJSON Schema
NameRequiredDescriptionDefault
uriNoEntity URI as returned by icd11_lookup, icd11_search or a previous icd11_hierarchy call
codeNoICD-11 code (e.g., "BA00", "5A11") or block range (e.g., "5A10-5A2Y")
languageNoLanguage code (default: en). Returns the source's OFFICIAL translation when it exists (e.g. 'pt' for official Portuguese); content is never machine-translated.en
directionYesDirection: "parents" for ancestors, "children" for subtypes

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeYes
entitiesYes
directionYes
provenanceYesProvenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license
attributionYesCanonical source URLs of this response (attribution list)

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, open-world and non-destructive behavior, so the bar is lower. The description still adds non-obvious traits: language returns only the source's OFFICIAL translation and is never machine-translated, and 'parents' can return blocks with an empty code plus a code_range. It does not mention any rate limits or result-size caps, so it falls short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first line, followed by a scannable use-case list and then parameter guidance. Every sentence carries information; the only mild redundancy is that the direction semantics are stated in both prose and schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be explained, and the description covers purpose, usage, parameter formats and language behavior. Minor gap: nothing about traversal depth, result volume, or behavior when an entity has no parents/children.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description genuinely enriches it: it explains the block-range code format, why an entity may arrive as an empty code with a code_range, and the official-translation semantics of language. The uri parameter is only glossed as 'the URI any previous answer returned'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Navigate) and resource (ICD-11 hierarchy) and immediately scopes it to parent/child traversal, which distinguishes it from icd11_lookup and icd11_search. An agent can tell what this tool returns without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Use this tool to' block gives three concrete scenarios (broader categories, subtypes, structure) and adds a routing rule: ICD-10 codes must be converted first with map_icd10_to_icd11. That names a sibling and the condition selecting it, so the main misuse path is closed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

icd11_lookupICD-11 Entity DetailsA
Read-onlyIdempotent
Inspect

Get detailed information about ONE ICD-11 entity you already have a code or URI for.

Use this tool to:

  • Get the full definition of a disease

  • Retrieve coding notes, inclusions and exclusions

  • Get the official title and index terms (synonyms)

Provide code (e.g., "BA00") or uri (any URI a previous answer returned) — at least one is required; calling with neither returns a validation error naming both. Set language for WHO's official translations (e.g. language: "pt" for official Portuguese).

Returns a single entity (no pagination). A code WHO does not know comes back as a "not found" error, never an empty record.

When NOT to use: to find a code from a disease name, use icd11_search first; to walk parents/children, use icd11_hierarchy; for an ICD-10 code (like "E11"), convert it with map_icd10_to_icd11 — ICD-10 codes are not ICD-11 codes.

ParametersJSON Schema
NameRequiredDescriptionDefault
uriNoFull ICD-11 foundation URI
codeNoICD-11 code (e.g., "BA00", "1A00")
languageNoLanguage code (default: en). Returns the source's OFFICIAL translation when it exists (e.g. 'pt' for official Portuguese); content is never machine-translated.en

Output Schema

ParametersJSON Schema
NameRequiredDescription
uriYes
codeYes
titleYes
block_idYes
class_kindYes
code_rangeYes
definitionYes
exclusionsYes
inclusionsYes
provenanceYesProvenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license
attributionYesCanonical source URLs of this response (attribution list)
browser_urlYes
coding_noteYes
index_termsYes
long_definitionYes
diagnostic_criteriaYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/openWorld/non-destructive, but the description adds real behavioral context beyond them: single entity with no pagination, unknown codes produce a 'not found' error rather than an empty record, and language returns only official translations and is never machine-translated. These are exactly the failure-mode details an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then organized into scannable bullets and a clearly separated exclusion section. Despite its length, every sentence carries distinct routing, constraint, or error information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return-value documentation is unnecessary, and the description still covers inputs, the at-least-one constraint, error behavior, language semantics, and sibling routing. Nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not: it clarifies that code and uri are mutually satisfiable alternatives where at least one is required, and that a call with neither yields a validation error naming both. The 'any URI a previous answer returned' hint is also genuinely useful for chaining calls.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get detailed information about ONE ICD-11 entity') and immediately scopes it to entities the agent already has a code or URI for. It explicitly names the siblings it is not (icd11_search, icd11_hierarchy, map_icd10_to_icd11), so an agent can route correctly without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-to-use list (definitions, coding notes, inclusions/exclusions, titles and synonyms) and an explicit 'When NOT to use' section that routes three distinct cases to the correct alternatives. The precondition ('you already have a code or URI') is stated up front.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

icd11_postcoordinationICD-11 Postcoordination OptionsA
Read-onlyIdempotent
Inspect

List the postcoordination axes WHO allows for one ICD-11 stem code (MMS linearization, pinned release).

Postcoordination means attaching extra detail to a stem code — severity, laterality, anatomy, causing agent, etc. — to build a composite (cluster) code.

Use this tool to:

  • See which axes a stem code accepts before building a composite code

  • Check which axes are REQUIRED vs optional

  • See whether an axis takes one or several values, and how many values it offers

Provide an ICD-11 code (e.g., "BA00"). Returns one entry per axis with axis_name, required, allow_multiple and value_count — the count of allowed values, not the values themselves. A code with no postcoordination, or one WHO does not know, returns an empty axes list (not an error), so check the code with icd11_lookup if the list is unexpectedly empty.

When NOT to use: this does not build or validate a composite code, and it does not list the allowed values; to get a code from a disease name, use icd11_search.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesICD-11 code to get postcoordination info for

Output Schema

ParametersJSON Schema
NameRequiredDescription
axesYes
codeYes
provenanceYesProvenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license
attributionYesCanonical source URLs of this response (attribution list)

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, open-world, non-destructive, so the safety profile is covered. The description adds genuinely useful behavior beyond that: it returns one entry per axis with axis_name/required/allow_multiple/value_count, and notably that an unknown or non-postcoordinatable code yields an empty axes list rather than an error, with a suggested recovery step.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the one-line purpose, then grouped usage bullets, return semantics, and an explicit exclusion clause. Slightly longer than strictly necessary but each section carries distinct information and the ordering is logical.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with full annotations and an output schema, the description covers purpose, usage, exclusions, return shape, and edge-case behavior. An agent has everything needed to call it correctly and interpret an empty result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single well-described required parameter, so the baseline is 3. The description adds a concrete format example ('BA00') and clarifies the code is an ICD-11 stem code, giving a small but real improvement over the schema's terse 'ICD-11 code to get postcoordination info for'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (list), a specific resource (postcoordination axes), and the scope (one ICD-11 stem code, MMS linearization/pinned release). The definition of postcoordination that follows makes the resource unambiguous and clearly separates it from sibling lookup/search tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use this tool to:' bullets cover the three selection cases (check accepted axes, required vs optional, single vs multi-value), and a 'When NOT to use' section names icd11_lookup and icd11_search with the conditions that route to them. Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

loinc_answersLOINC Answer ListsA
Read-onlyIdempotent
Inspect

Get the list of valid answers for a LOINC questionnaire item.

Use this tool to:

  • Find valid response options for survey questions

  • Get answer codes (LA…) for data entry validation

  • Get the item scores of scored instruments (e.g. PHQ-9: "Not at all" = 0 … "Nearly every day" = 3)

Returns each answer with its LOINC answer code (LA…), text, display order and score (null when the list has none). A valid LOINC code without a defined answer list (e.g. a numeric lab such as 2339-0) returns an empty list; a code LOINC does not know returns a "not found" error.

Only applicable to LOINC codes that represent questions with defined answer sets. For the questions of a whole questionnaire, use loinc_panels; to find a code by name, use loinc_search.

ParametersJSON Schema
NameRequiredDescriptionDefault
loinc_numYesLOINC number (e.g., "2339-0")

Output Schema

ParametersJSON Schema
NameRequiredDescription
answersYes
loinc_numYes
provenanceYesProvenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license
attributionYesCanonical source URLs of this response (attribution list)

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, but the description adds real behavioral context: the shape of each returned answer (LA code, text, display order, score, null score when absent), the empty-list case for valid codes without an answer set, and the 'not found' error for unknown codes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded one-line purpose followed by scannable bullets, a return-shape sentence, and a usage/alternative sentence. Every line carries distinct information with no padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with an output schema and full annotation coverage, the description covers purpose, return values, edge cases (empty list, not-found), applicability constraints, and sibling routing. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema documents the single parameter, but the description adds a meaningful constraint — only LOINC codes representing questions with defined answer sets are applicable, with the numeric-lab example (2339-0) showing a code that yields an empty list. This adds value beyond the schema's pattern/example.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'Get the list of valid answers for a LOINC questionnaire item' — and the bullet list pins down exactly what is retrieved (answer codes, scores). It clearly differentiates from siblings loinc_panels and loinc_search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names when to use it (survey response options, data-entry validation, scored instrument items) and names the alternatives: loinc_panels for whole-questionnaire questions and loinc_search to find a code by name. Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

loinc_detailsLOINC Code DetailsA
Read-onlyIdempotent
Inspect

Get detailed information about a specific LOINC code.

Use this tool to:

  • Get the full name and description of a LOINC code

  • Find the component, property, timing, and system

  • Check the scale type and method

Provide a LOINC number in format "XXXXX-X" (e.g., "2339-0" for Glucose).

ParametersJSON Schema
NameRequiredDescriptionDefault
loinc_numYesLOINC number (e.g., "2339-0")

Output Schema

ParametersJSON Schema
NameRequiredDescription
classYes
statusYes
systemYes
propertyYes
componentYes
loinc_numYes
provenanceYesProvenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license
scale_typeYes
short_nameYes
attributionYesCanonical source URLs of this response (attribution list)
method_typeYes
time_aspectYes
long_common_nameYes
external_copyright_noticeYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true, so the safety profile is clear. The description adds no further behavioral context such as rate limits, permissions, or response format. With annotations covering safety, this is adequate but minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded: a clear purpose sentence followed by a bullet list of retrievable details and a precise input format note. Every sentence earns its place without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has an output schema, the description need not explain return values. It covers the purpose, input format, and what fields are included. However, it could mention that this tool is for exact LOINC code lookup versus broader searches, which would improve completeness for routing among siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter is well-documented with a pattern and example. The description repeats the format and example but adds no new semantic meaning beyond the schema. Baseline 3 applies when schema fully covers parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: 'Get detailed information about a specific LOINC code.' It distinguishes itself from siblings like loinc_search by emphasizing retrieval by identifier, though it does not explicitly name alternatives. The purpose is immediately understandable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage through bullet points of what can be obtained and the input format, but it lacks explicit guidance on when to use this tool versus alternatives like loinc_search (for keyword search) or loinc_panels (for panel information). It provides context but no exclusions or alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

loinc_panelsLOINC Panel StructureA
Read-onlyIdempotent
Inspect

Get the structure of a LOINC panel or form.

Use this tool to:

  • See all tests included in a panel (e.g., CBC, metabolic panel)

  • Get the structure of assessment forms

  • Find related observations grouped together

Returns the list of LOINC codes that make up the panel.

ParametersJSON Schema
NameRequiredDescriptionDefault
loinc_numYesLOINC number (e.g., "2339-0")

Output Schema

ParametersJSON Schema
NameRequiredDescription
panelYes
loinc_numYes
provenanceYesProvenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license
attributionYesCanonical source URLs of this response (attribution list)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is fully covered by structured data. The description's only added behavioral claim is that it returns the list of LOINC codes forming the panel, which is redundant with the output schema and says nothing about non-panel inputs or errors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded one-line purpose followed by a tight three-bullet usage list and a one-line return statement; no filler. Slightly list-heavy for a single-parameter tool, but every line carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read tool with full annotations and an output schema, the description covers purpose, use cases, and return content adequately. The only gap is behavior when the supplied code is not a panel, which an agent might reasonably want to know.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter is documented in-schema with an example and pattern, so the baseline is 3. The description adds no meaning about loinc_num beyond the schema, such as whether it must be a panel-type code rather than any LOINC code.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get the structure of a LOINC panel or form') and enumerates concrete things the caller will see (tests in a CBC, form structure, related observations). It is clearly distinct from generic siblings like loinc_search or loinc_details, though it never names those siblings to draw the contrast explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Use this tool to' bullets give clear situational context: enumerating panel members, reading form structure, and finding grouped observations. There is no guidance on when NOT to use it (e.g., for a standalone test code, use loinc_details instead), so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

map_icd10_to_icd11Map ICD-10 to ICD-11A
Read-onlyIdempotent
Inspect

Authoritative ICD-10 → ICD-11 mapping using WHO transition tables (release 2025-01, bundled with the server).

Returns the primary 1:1 ICD-11 category for the ICD-10 code plus any alternative ICD-11 candidates that WHO documents (some ICD-10 concepts split into multiple ICD-11 entities). For each mapping, includes the ICD-11 code, title, chapter, and the Foundation URI / Linearization URI for navigating to the full entity definition.

Use this for clinical coding, billing migration, retrospective analysis, and any workflow that needs authoritative mapping rather than text-search candidates. Coverage: 11,243 ICD-10 categories (excludes chapters and blocks like "A00-A09" which aren't used in clinical coding).

Provide a code like "E11" (Type 2 diabetes), "I21" (Acute MI), or "A07.8" (4 alternatives in WHO's table). Both dotted ("A07.8") and undotted ("A078") forms are accepted.

Returns "no mapping" when the code isn't in the WHO category-level table — that's the honest answer rather than a fuzzy search fallback.

ParametersJSON Schema
NameRequiredDescriptionDefault
icd10_codeYesICD-10 code to query in the ICD-11 search index (e.g., E11, I21.0, J18.9)

Output Schema

ParametersJSON Schema
NameRequiredDescription
foundYesWhether the code is in the WHO ICD-10 → ICD-11 transition table.
icd10YesSource ICD-10 entry from the WHO table. Null when found=false.
queryYesThe ICD-10 code as submitted (raw, before normalization).
sourceYes
primaryYesPrimary 1:1 ICD-11 mapping. Null when found=false.
provenanceYesProvenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license
attributionYesCanonical source URLs of this response (attribution list)
alternativesYesAdditional ICD-11 candidates WHO documents for this ICD-10 code. Empty when the primary is the only documented mapping (or when found=false). 1,461 of the 11,243 indexed codes have non-empty alternatives.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/openWorld/idempotent/non-destructive, yet the description adds substantial behavioral context: the return shape (primary 1:1 plus alternative candidates), the included fields (code, title, chapter, Foundation/Linearization URI), 11,243-category coverage, and the honest 'no mapping' behavior instead of a fuzzy fallback.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well front-loaded: source, return shape, then usage and edge cases. Slightly longer than strictly necessary (multiple example codes, coverage count), but every sentence carries useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although an output schema exists, the description still gives enough about return contents and edge-case behavior ('no mapping') to call the tool confidently. Nothing an agent needs is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single parameter, so baseline is 3; the description goes beyond the schema by noting that both dotted ('A07.8') and undotted ('A078') forms are accepted and giving example codes, which the schema does not state.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (ICD-10 → ICD-11 mapping) and the authoritative source (WHO transition tables, release 2025-01). It also implicitly separates itself from the text-search siblings ('authoritative mapping rather than text-search candidates'), so an agent can route correctly without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete use cases (clinical coding, billing migration, retrospective analysis) and the condition that selects it over fuzzy search ('rather than text-search candidates'), plus an explicit exclusion for chapters/blocks. It stops short of naming the alternative tool (e.g., icd11_search) directly, but the routing signal is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mesh_descriptorMeSH Descriptor DetailsA
Read-onlyIdempotent
Inspect

Get detailed information about a MeSH descriptor by ID.

Use this tool to:

  • Get the full definition (scope note) of a MeSH term

  • View tree numbers showing hierarchy location

  • See related concepts and synonyms

Provide a MeSH Descriptor ID like "D015242" (Ofloxacin). Set language to request NLM's official translations where they exist (e.g. language: "pt").

ParametersJSON Schema
NameRequiredDescriptionDefault
mesh_idYesMeSH Descriptor ID (e.g., D015242, D003920)
languageNoLanguage code (default: en). Returns the source's OFFICIAL translation when it exists (e.g. 'pt' for official Portuguese); content is never machine-translated.en

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
uriYes
labelYes
conceptsYes
provenanceYesProvenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license
qualifiersYes
scope_noteYes
attributionYesCanonical source URLs of this response (attribution list)
tree_numbersYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, open-world). The description adds genuine behavioral context beyond them: translations are NLM's official ones where they exist and content is never machine-translated, which sets correct expectations about partial and authoritative data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose sentence followed by a tight bulleted capability list and one parameter hint; no filler. Slightly redundant with the schema on the language parameter, but well within budget for a two-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple lookup with an output schema present, the description covers purpose, the ID format, and language behavior adequately; return-value shape is left to the output schema. Nothing essential is missing, though it never mentions what happens for an unknown ID.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema, including the enum and the official-translation caveat. The description's ID example (D015242) and language example duplicate schema content almost verbatim, adding only the 'NLM' attribution.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (get detailed information about a MeSH descriptor by ID), which is clearly distinct from mesh_search (search) and mesh_tree (hierarchy browsing). It does not name siblings explicitly, but the resource is unambiguous enough to distinguish them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Use this tool to:' bullets describe what content is returned (scope note, tree numbers, synonyms) rather than conditions for choosing this tool over mesh_search or mesh_tree. Usage is implied by the required-ID input, but no alternatives or exclusions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mesh_qualifiersMeSH Allowable QualifiersA
Read-onlyIdempotent
Inspect

Get allowed qualifiers (subheadings) for a MeSH descriptor.

Use this tool to:

  • Find which qualifiers can be combined with a descriptor

  • Build precise MeSH search queries

  • Understand aspects that can be specified

Qualifiers refine descriptors (e.g., "Diabetes Mellitus/drug therapy").

ParametersJSON Schema
NameRequiredDescriptionDefault
mesh_idYesMeSH Descriptor ID (e.g., D015242, D003920)

Output Schema

ParametersJSON Schema
NameRequiredDescription
mesh_idYes
provenanceYesProvenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license
qualifiersYes
attributionYesCanonical source URLs of this response (attribution list)

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The description adds domain context by defining qualifiers as subheadings and illustrating refinement syntax ('Diabetes Mellitus/drug therapy'), which is genuine value beyond the structured fields. It does not discuss output shape, but an output schema exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded in the first sentence, followed by a scannable bullet list of use cases and one clarifying example. Every element earns its place, though the bullets add minor length for a one-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter read tool with full annotations and an output schema, the description supplies the conceptual background needed to interpret qualifiers. Nothing critical for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single mesh_id parameter is fully documented with a pattern and examples, so the schema carries the load. The description's example concerns qualifier syntax, not the mesh_id argument, adding no parameter detail. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (allowed qualifiers/subheadings for a MeSH descriptor), which is unambiguous. It distinguishes itself from mesh_descriptor, mesh_search, and mesh_tree by naming the distinct concept of qualifiers/subheadings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Use this tool to' list gives three concrete scenarios: finding combinable qualifiers, building precise MeSH queries, and understanding specifiable aspects. It does not explicitly name which sibling to use instead (e.g., mesh_descriptor for descriptor metadata), so it stops short of full alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mesh_treeMeSH Tree LocationsA
Read-onlyIdempotent
Inspect

Get the tree hierarchy location(s) for a MeSH descriptor.

Use this tool to:

  • See where a term fits in the MeSH hierarchy

  • Understand broader/narrower relationships

  • Find related terms in the same branch

MeSH tree numbers show the hierarchical path (e.g., C14.280.647 for Myocardial Infarction).

ParametersJSON Schema
NameRequiredDescriptionDefault
mesh_idYesMeSH Descriptor ID (e.g., D015242, D003920)

Output Schema

ParametersJSON Schema
NameRequiredDescription
mesh_idYes
provenanceYesProvenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license
attributionYesCanonical source URLs of this response (attribution list)
tree_numbersYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered structurally. The description usefully adds the output shape of tree numbers (e.g., C14.280.647) but says nothing about error handling for non-descriptor IDs or qualifier IDs. With annotations carrying the behavioral load, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose sentence is front-loaded and the supporting bullets are short and scannable. The bullets partly restate the opening sentence's idea (hierarchy location vs. broader/narrower relationships), so there is mild redundancy, but nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, annotations covering the safety profile, and a fully documented single parameter, the description only needs to frame intent — which it does. The tree-number format example helps an agent interpret the response, though it doesn't note what happens for qualifiers or invalid IDs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter with 100% schema description coverage, including a regex pattern and examples (D015242, D003920), so the schema does the heavy lifting. The description adds no additional meaning about mesh_id beyond what the schema states, which is the expected baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb+resource ('Get the tree hierarchy location(s) for a MeSH descriptor') and clarifies that output is hierarchical tree-number paths, which distinguishes it from a plain descriptor lookup. It does not explicitly name mesh_descriptor or mesh_search as the alternatives, so differentiation from those siblings is left implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Use this tool to' block supplies three concrete scenarios (locating a term in the hierarchy, reading broader/narrower relationships, finding branch siblings), which is clear positive context. However, it offers no exclusions or prerequisites — e.g., that a descriptor ID must be obtained from mesh_search first — so it stops short of the when-not guidance a 5 requires.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rxnorm_classesRxNorm Drug ClassesA
Read-onlyIdempotent
Inspect

Get therapeutic and pharmacologic classes for a drug.

Use this tool to:

  • Find the drug class (e.g., "Beta-blockers", "NSAIDs")

  • Identify therapeutic categories

  • Look up mechanism of action classifications

Returns class IDs, names, and classification sources.

ParametersJSON Schema
NameRequiredDescriptionDefault
rxcuiYesRxCUI of the drug

Output Schema

ParametersJSON Schema
NameRequiredDescription
rxcuiYes
classesYes
provenanceYesProvenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license
attributionYesCanonical source URLs of this response (attribution list)

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered elsewhere. The description adds only that results include class IDs, names and classification sources, and says nothing about behavior for an invalid or non-existent RxCUI. Some added value, but modest.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded one-line purpose followed by short scannable bullets and a returns line. Slightly redundant because the bullets and the returns line partially restate the purpose and duplicate the output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a rich annotation set, a documented single parameter and an output schema in place, the description covers what an agent needs to select and call the tool. Only minor gaps remain, such as behavior on an unknown RxCUI or how multiple classification sources are ordered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter (rxcui) with 100% schema description coverage, so the schema already carries the semantics. The description adds no format, range, or resolution guidance beyond what the schema states, which is the expected baseline when schema coverage is complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: fetching therapeutic and pharmacologic drug classes for a given drug. It is clearly distinct from siblings like rxnorm_ingredients or rxnorm_ndc, but it never names or contrasts those siblings, so the differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Use this tool to' bullets give use-case context (drug class lookup, therapeutic categories, mechanism of action), but they largely restate the opening sentence rather than adding new guidance. No when-not-to-use condition and no named alternative (e.g., rxnorm_concept) is offered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rxnorm_conceptRxNorm Concept DetailsA
Read-onlyIdempotent
Inspect

Get detailed information about a specific RxNorm concept by RxCUI.

Use this tool to:

  • Get the full name and synonyms for a drug

  • Check the concept status (active, remapped, etc.)

  • View related concepts (ingredients, brands, forms)

Provide an RxCUI (RxNorm Concept Unique Identifier) like "161" — as a string of digits or as an integer.

ParametersJSON Schema
NameRequiredDescriptionDefault
rxcuiYesRxNorm Concept Unique Identifier (string of digits or integer, e.g. "161" or 161)
include_relatedNoInclude related concepts (ingredients, brands, dose forms). Default false; true/false, also accepted as the strings "true"/"false"

Output Schema

ParametersJSON Schema
NameRequiredDescription
ttyYes
nameYes
foundYesfalse when RxNorm has no concept with this RxCUI (the lookup answered; the fields below are null)
rxcuiYes
statusYes
synonymYes
umlscuiYes
languageYes
suppressYes
provenanceYesProvenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license
attributionYesCanonical source URLs of this response (attribution list)
remapped_toYes
related_groupsYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered. The description adds value by disclosing what content comes back (name, synonyms, status, related concepts), but says nothing about error behavior for an unknown RxCUI, remapping behavior, or rate/auth context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then a compact bullet list, then parameter guidance. The closing sentence on RxCUI formatting largely repeats the schema, which is a small redundancy, but overall the structure is tight and scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return-value structure need not be described, and the annotations carry the safety profile, so the remaining burden is light. The description covers purpose, use cases, and both parameters adequately; only the routing against rxnorm_search is left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: both rxcui and include_related are documented in the schema, including the string-or-integer duality and the default for include_related. The description's restatement of the RxCUI format and the '161' example duplicate the schema rather than extending it, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get detailed information about a specific RxNorm concept') and scopes it to an identifier lookup ('by RxCUI'), which inherently separates it from name-based siblings like rxnorm_search. An agent can identify this as the ID-based detail lookup without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The bulleted use cases ('get full name and synonyms', 'check concept status', 'view related concepts') give clear context for when this tool applies. However, it never names an alternative or an exclusion — it doesn't tell the agent to prefer rxnorm_search when it only has a drug name, which is the most likely confusion among these siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rxnorm_ingredientsRxNorm Drug IngredientsA
Read-onlyIdempotent
Inspect

Get active ingredients for a drug by RxCUI.

Use this tool to:

  • Find the active ingredients in a medication

  • Check for single vs. multiple ingredient products

  • Identify the generic components of brand drugs

Returns ingredient RxCUIs and names.

ParametersJSON Schema
NameRequiredDescriptionDefault
rxcuiYesRxCUI of the drug

Output Schema

ParametersJSON Schema
NameRequiredDescription
rxcuiYes
provenanceYesProvenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license
attributionYesCanonical source URLs of this response (attribution list)
ingredientsYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety and determinism profile is covered. The description adds the return shape ('ingredient RxCUIs and names') but says nothing about behavior for invalid RxCUIs, missing ingredients, or multi-ingredient products beyond a use-case mention. Useful but modest added value over the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Short and front-loaded: the core operation is stated first, followed by a compact bullet list and a one-line return note. The first bullet largely restates the opening sentence, a minor redundancy, but nothing is bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not document return values, and annotations cover the safety profile. The remaining minor gaps are failure/edge-case behavior (invalid or unknown RxCUI, products with no ingredient data), which an agent could reasonably want to know.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single 'rxcui' parameter, so the schema already carries the semantic load. The description only echoes the parameter ('by RxCUI') without adding format expectations, accepted value sources, or error behavior. Baseline 3 is appropriate when the schema does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence gives a specific verb and resource ('Get active ingredients for a drug by RxCUI'), which is functionally distinct from siblings like rxnorm_concept, rxnorm_classes, rxnorm_ndc, and rxnorm_search. An agent can tell immediately that this tool returns ingredient-level data rather than a full concept record or a code lookup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The bulleted use cases ('find active ingredients', 'check for single vs. multiple ingredient products', 'identify generic components of brand drugs') give clear context for when to reach for this tool. There is no guidance on when NOT to use it or which sibling to prefer for a related question (e.g., rxnorm_concept for full concept details), which keeps it out of the top band.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rxnorm_ndcRxNorm / NDC MappingA
Read-onlyIdempotent
Inspect

Map between RxNorm concepts and National Drug Codes (NDC).

Use this tool to:

  • Get all NDC codes for a drug (by RxCUI)

  • Find the RxCUI for an NDC code

  • Cross-reference between coding systems

Provide either an RxCUI to get NDCs, or an NDC to get the RxCUI.

ParametersJSON Schema
NameRequiredDescriptionDefault
ndcNoNDC code to look up RxCUI (alternative to rxcui)
rxcuiNoRxCUI to get NDC codes for

Output Schema

ParametersJSON Schema
NameRequiredDescription
ndcYes
ndcsYes
rxcuiYes
provenanceYesProvenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license
query_modeYes
attributionYesCanonical source URLs of this response (attribution list)

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is fully covered. The description adds the dual-mode behavior (input field determines direction of the mapping), which is useful, but says nothing about return shape, rate limits, or ambiguity handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core mapping statement, then uses a compact bulleted list for use cases and closes with the input rule. The bullet 'Cross-reference between coding systems' slightly restates the opening line, a minor redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present the description needn't explain return values, and annotations cover safety. Coverage of when each input mode applies is adequate; the only gap is not stating NDC format expectations or what happens if neither parameter is supplied.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameter descriptions already state the alternative relationship ('alternative to rxcui'). The description's either/or sentence largely restates that, so baseline 3 applies; format details for NDC (10/11-digit) are absent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (map) and resource (RxNorm concepts ↔ NDC codes) and makes the bidirectionality explicit. An agent can distinguish it from rxnorm_concept, rxnorm_search, and the ATC/LOINC siblings without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Three concrete use cases are enumerated and the input convention ('provide either an RxCUI ... or an NDC') is stated, so the agent knows how to invoke it. No exclusions or alternative-tool routing (e.g. when to prefer rxnorm_concept) are given, keeping it short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

terminology_diffTerminology Version DiffA
Read-onlyIdempotent
Inspect

Report what diff data is available between two versions of a terminology.

For most terminologies this is guidance only — the server doesn't ship historical snapshots, so the tool points at the publisher's official changelog and explains the cadence. bundled_versions lists the version(s) this server actually has on hand.

For ICD-10 vs ICD-11 specifically, the tool surfaces a real cross-revision summary from the bundled WHO transition tables (the ICD-10 → ICD-11 case is a structural diff between two WHO revisions). Use terminology: "icd10" with no to_version to get the cross-revision summary: total mapped ICD-10 categories, how many are 1:1 vs split into multiple ICD-11 codes, and the average number of alternatives when split.

Inputs:

  • terminology (required): which terminology to report on.

  • from_version (optional): the version you have data from. If omitted, the tool reports against the currently-bundled version.

  • to_version (optional): the version you want to compare to. If omitted, the tool reports against the publisher's latest known release.

This tool is intentionally a metadata + guidance layer, not a diff engine — for terminologies that change frequently (LOINC, RxNorm, MeSH), the publisher's official changelog is the authoritative source.

ParametersJSON Schema
NameRequiredDescriptionDefault
to_versionNoVersion you want to compare to. Optional.
terminologyYesWhich terminology to report on.
from_versionNoVersion you have data from. Optional; behavior depends on terminology.

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageYes
provenanceYesProvenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license
to_versionYes
attributionYesCanonical source URLs of this response (attribution list)
terminologyYes
from_versionYes
changelog_urlYes
diff_availableYesTrue when this server has the data to compute a real diff for the requested terminology. False = guidance-only response.
bundled_versionsYes
cross_revision_summaryYesPopulated only for terminology="icd10" today — the bundled WHO ICD-10 → ICD-11 transition tables let us surface a real structural diff between the two WHO revisions.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description layers on substantial behavioral context beyond them: the server doesn't ship historical snapshots, bundled_versions lists what's on hand, and the ICD-10 case returns concrete fields (1:1 vs split counts, average alternatives). It even sets expectations about the tool being a metadata layer rather than a diff engine.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with the core distinction and uses a clean bulleted input list, but it is fairly long and the closing paragraph restates the 'metadata + guidance layer, not a diff engine' framing already implied by the opening. Slight redundancy, though every block is informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a metadata/guidance tool with an output schema already present and annotations covering safety, the description supplies everything an agent needs: which terminologies get real data, the special ICD-10 invocation, param defaults, and a fallback source. No material gap remains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all three params, but the description adds real semantic value: it explains the default behavior when from_version or to_version are omitted (report against bundled version / publisher's latest), and that the terminology value changes the entire behavior model. This goes beyond the terse schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('report what diff data is available between two versions of a terminology') and immediately disambiguates it from being an actual diff engine. It also delineates itself from siblings like terminology_versions and map_icd10_to_icd11 by naming exactly which terminology surfaces real cross-revision data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use guidance: guidance-only for most terminologies, real cross-revision summary for ICD-10 vs ICD-11, and it names the exact call pattern ('terminology: "icd10"' with no to_version). It further routes the agent to the publisher's official changelog as the authoritative source for fast-moving terminologies.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

terminology_versionsTerminology VersionsA
Read-onlyIdempotent
Inspect

List the current version, release date, publisher, source URL, and update cadence of every terminology this server queries against.

Useful for pipeline maintainers who need to:

  • Confirm which release of ICD-11 / LOINC / RxNorm / MeSH / ATC the server is querying before a batch run.

  • Verify the bundled CID-10 (frozen at V2008) and ICD-10 → ICD-11 transition tables (currently 2025-01) match expectations.

  • Cite the data version in research artifacts.

Pass 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
terminologyNoFilter to a single terminology. Omit to return all 7.

Output Schema

ParametersJSON Schema
NameRequiredDescription
totalYes
generatedYesDate this snapshot was generated.
provenanceYesProvenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license
attributionYesCanonical source URLs of this response (attribution list)
terminologiesYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/openWorld/non-destructive, so the safety profile is covered. The description adds real behavioral context beyond that: the ICD-10 → ICD-11 entry is read live from the bundled dataset while all others are release-maintained metadata, and the full set is 7 entries. It stops short of stating whether the live read can differ between calls.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, followed by a compact bulleted list of use cases and a filtering note. Every sentence carries information, though the three bullets are slightly verbose for what amounts to a single 'check versions before running' idea.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With only one optional enum parameter, an output schema present, and rich annotations, the description covers everything an agent needs: what is listed, default vs filtered behavior, the live-vs-static distinction, and the motivating use cases. No material gap remains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the enum values are already documented, so the baseline is 3. The description adds value by stating the default behavior ('omit to return all 7') and the cardinality of the unfiltered result, which the schema alone does not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('List') and enumerates exactly what is returned (version, release date, publisher, source URL, update cadence) for every terminology the server queries against. This is clearly distinct from the many lookup/search siblings, which operate on codes rather than server metadata.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete when-to-use contexts: confirm releases before a batch run, verify bundled/frozen table versions, cite versions in research. It does not explicitly name an alternative (e.g. terminology_diff) or state when-not to use it, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_codesValidate Medical CodesA
Read-onlyIdempotent
Inspect

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.

For each input { code, terminology }, returns:

  • valid: whether the code exists in the source terminology.

  • 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).

  • title: the official label/name when available.

  • 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.

  • source: human-readable provenance of the validation (terminology + release/version).

  • 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".

Terminology 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.

Hard 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).

ParametersJSON Schema
NameRequiredDescriptionDefault
codesYesList of code+terminology pairs to validate. Hard cap of 50 per call to keep total latency under ~10 s given upstream rate limits.

Output Schema

ParametersJSON Schema
NameRequiredDescription
totalYesNumber of codes submitted.
resultsYes
provenanceYesOne provenance block per upstream source that contributed to this response (contract v1.1; licenses are never merged; each block carries the origin diagnostics of ITS source)
attributionYesCanonical source URLs of this response (attribution list)
error_countYesHow many couldn't be validated due to upstream/network errors.
valid_countYesHow many were confirmed valid.
invalid_countYesHow many were not found.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations (which only declare readOnly/idempotent/openWorld/non-destructive) by disclosing the error-vs-not-found contract, that `active` is null for most terminologies and boolean only for LOINC, that `replaced_by` is populated only for ICD-10 with WHO transition tables, the 50-code hard cap, and worst-case ~10 s latency from parallel upstream clients and rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose and use case, then structures return semantics as a scannable list. It is on the long side and the return-field block partially overlaps the output schema, but the null/error nuances are non-obvious and earn their space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a batch validation tool with an output schema, an open-world upstream dependency, and a hard cap, the description supplies everything an agent needs: input shape, terminology requirement, failure semantics, and latency expectations. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it enumerates the accepted terminology values and justifies why terminology is required per code (category codes like "A00" are ambiguous between ICD-10 and CID-10), plus the per-call cap rationale. This is value beyond the schema's field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (validate) and resource (a mixed batch of medical codes against their source terminologies), and the batch framing distinguishes it from the per-code lookup siblings like icd10_lookup and icd11_lookup. An agent can identify the tool's role without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for use — retrospective analysis of legacy databases, flagging dead codes, surfacing ICD-10 → ICD-11 replacements. However, it never explicitly names an alternative or states when NOT to use it (e.g. for single-code validation where a lookup sibling would suffice), so routing is inferred rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 33 tool updatesv2.1.1
    • Changedatc_classify1 field changed
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Present only when the response joins parts from different origins or extraction instants (contract v1.2): for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedatc_lookup1 field changed
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Present only when the response joins parts from different origins or extraction instants (contract v1.2): for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedatc_members1 field changed
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Present only when the response joins parts from different origins or extraction instants (contract v1.2): for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedcid10_chapter1 field changed
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Present only when the response joins parts from different origins or extraction instants (contract v1.2): for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedcid10_chapters1 field changed
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Present only when the response joins parts from different origins or extraction instants (contract v1.2): for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedcid10_lookup1 field changed
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Present only when the response joins parts from different origins or extraction instants (contract v1.2): for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedcid10_search1 field changed
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Present only when the response joins parts from different origins or extraction instants (contract v1.2): for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedfetch1 field changed
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Present only when the response joins parts from different origins or extraction instants (contract v1.2): for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedfind_equivalent2 fields changed
      • changedOutput schema / properties / provenance / items / description
        Previous value: -"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"New value: +"Bloco de proveniência (contrato v1.2): fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando a resposta junta partes de origens ou momentos distintos, de onde veio cada parte"
      • addedOutput schema / properties / provenance / items / properties / field_sources
        Added value: +{
        +  "description": "Present only when the response joins parts from different origins or extraction instants (contract v1.2): for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedharmonize_terms2 fields changed
      • changedOutput schema / properties / provenance / items / description
        Previous value: -"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"New value: +"Bloco de proveniência (contrato v1.2): fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando a resposta junta partes de origens ou momentos distintos, de onde veio cada parte"
      • addedOutput schema / properties / provenance / items / properties / field_sources
        Added value: +{
        +  "description": "Present only when the response joins parts from different origins or extraction instants (contract v1.2): for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedicd11_chapters1 field changed
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Present only when the response joins parts from different origins or extraction instants (contract v1.2): for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedicd11_hierarchy1 field changed
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Present only when the response joins parts from different origins or extraction instants (contract v1.2): for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedicd11_lookup1 field changed
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Present only when the response joins parts from different origins or extraction instants (contract v1.2): for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedicd11_postcoordination1 field changed
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Present only when the response joins parts from different origins or extraction instants (contract v1.2): for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedicd11_search1 field changed
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Present only when the response joins parts from different origins or extraction instants (contract v1.2): for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedloinc_answers1 field changed
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Present only when the response joins parts from different origins or extraction instants (contract v1.2): for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedloinc_details1 field changed
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Present only when the response joins parts from different origins or extraction instants (contract v1.2): for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedloinc_panels1 field changed
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Present only when the response joins parts from different origins or extraction instants (contract v1.2): for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedloinc_search1 field changed
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Present only when the response joins parts from different origins or extraction instants (contract v1.2): for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedmap_icd10_to_icd111 field changed
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Present only when the response joins parts from different origins or extraction instants (contract v1.2): for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedmesh_descriptor1 field changed
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Present only when the response joins parts from different origins or extraction instants (contract v1.2): for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedmesh_qualifiers1 field changed
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Present only when the response joins parts from different origins or extraction instants (contract v1.2): for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedmesh_search1 field changed
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Present only when the response joins parts from different origins or extraction instants (contract v1.2): for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedmesh_tree1 field changed
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Present only when the response joins parts from different origins or extraction instants (contract v1.2): for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedrxnorm_classes1 field changed
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Present only when the response joins parts from different origins or extraction instants (contract v1.2): for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedrxnorm_concept1 field changed
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Present only when the response joins parts from different origins or extraction instants (contract v1.2): for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedrxnorm_ingredients1 field changed
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Present only when the response joins parts from different origins or extraction instants (contract v1.2): for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedrxnorm_ndc1 field changed
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Present only when the response joins parts from different origins or extraction instants (contract v1.2): for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedrxnorm_search1 field changed
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Present only when the response joins parts from different origins or extraction instants (contract v1.2): for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedsearch2 fields changed
      • changedOutput schema / properties / provenance / items / description
        Previous value: -"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"New value: +"Bloco de proveniência (contrato v1.2): fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando a resposta junta partes de origens ou momentos distintos, de onde veio cada parte"
      • addedOutput schema / properties / provenance / items / properties / field_sources
        Added value: +{
        +  "description": "Present only when the response joins parts from different origins or extraction instants (contract v1.2): for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedterminology_diff1 field changed
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Present only when the response joins parts from different origins or extraction instants (contract v1.2): for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedterminology_versions1 field changed
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Present only when the response joins parts from different origins or extraction instants (contract v1.2): for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Changedvalidate_codes2 fields changed
      • changedOutput schema / properties / provenance / items / description
        Previous value: -"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"New value: +"Bloco de proveniência (contrato v1.2): fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando a resposta junta partes de origens ou momentos distintos, de onde veio cada parte"
      • addedOutput schema / properties / provenance / items / properties / field_sources
        Added value: +{
        +  "description": "Present only when the response joins parts from different origins or extraction instants (contract v1.2): for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
  2. 8 tool updatesv2.0.0
    • Changedfind_equivalent7 fields changed
      • changedInput schema / properties / source_terminology / enum
        Previous value: -[
        -  "icd11",
        -  "snomed",
        -  "loinc",
        -  "rxnorm",
        -  "mesh"
        -]New value: +[
        +  "icd11",
        +  "loinc",
        +  "rxnorm",
        +  "mesh"
        +]
      • changedInput schema / properties / target_terminologies / items / enum
        Previous value: -[
        -  "icd11",
        -  "snomed",
        -  "loinc",
        -  "rxnorm",
        -  "mesh"
        -]New value: +[
        +  "icd11",
        +  "loinc",
        +  "rxnorm",
        +  "mesh"
        +]
      • changedOutput schema / properties / groups / items / properties / members / items / properties / terminology / enum
        Previous value: -[
        -  "icd11",
        -  "snomed",
        -  "loinc",
        -  "rxnorm",
        -  "mesh"
        -]New value: +[
        +  "icd11",
        +  "loinc",
        +  "rxnorm",
        +  "mesh"
        +]
      • changedOutput schema / properties / groups / items / properties / terminologies / items / enum
        Previous value: -[
        -  "icd11",
        -  "snomed",
        -  "loinc",
        -  "rxnorm",
        -  "mesh"
        -]New value: +[
        +  "icd11",
        +  "loinc",
        +  "rxnorm",
        +  "mesh"
        +]
      • removedOutput schema / properties / results / properties / snomed
        Removed value: -{
        -  "additionalProperties": false,
        -  "properties": {
        -    "error": {
        -      "type": [
        -        "string",
        -        "null"
        -      ]
        -    },
        -    "found": {
        -      "type": "boolean"
        -    },
        -    "items": {
        -      "items": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "code": {
        -            "type": "string"
        -          },
        -          "match_score": {
        -            "maximum": 1,
        -            "minimum": 0,
        -            "type": "number"
        -          },
        -          "rank": {
        -            "maximum": 9007199254740991,
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          "title": {
        -            "type": "string"
        -          },
        -          "uri": {
        -            "type": [
        -              "string",
        -              "null"
        -            ]
        -          }
        -        },
        -        "required": [
        -          "code",
        -          "title",
        -          "uri",
        -          "match_score",
        -          "rank"
        -        ],
        -        "type": "object"
        -      },
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "found",
        -    "error",
        -    "items"
        -  ],
        -  "type": "object"
        -}
      • changedOutput schema / properties / searched_terminologies / items / enum
        Previous value: -[
        -  "icd11",
        -  "snomed",
        -  "loinc",
        -  "rxnorm",
        -  "mesh"
        -]New value: +[
        +  "icd11",
        +  "loinc",
        +  "rxnorm",
        +  "mesh"
        +]
      • changedOutput schema / properties / source_terminology / anyOf
        Previous value: -[
        -  {
        -    "enum": [
        -      "icd11",
        -      "snomed",
        -      "loinc",
        -      "rxnorm",
        -      "mesh"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "enum": [
        +      "icd11",
        +      "loinc",
        +      "rxnorm",
        +      "mesh"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Addedharmonize_terms
    • Changedloinc_answers4 fields changed
      • addedOutput schema / properties / answers / items / properties / answer_code / description
        Added value: +"LOINC answer code (LA…), e.g. \"LA18976-3\"."
      • addedOutput schema / properties / answers / items / properties / score
        Added value: +{
        +  "description": "Numeric score for scored instruments (PHQ-9 items: 0-3); null when the answer list carries none.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / answers / items / properties / sequence / description
        Added value: +"Display order in the answer list (1-based)."
      • changedOutput schema / properties / answers / items / required
        Previous value: -[
        -  "sequence",
        -  "answer_code",
        -  "answer_string"
        -]New value: +[
        +  "sequence",
        +  "answer_code",
        +  "answer_string",
        +  "score"
        +]
    • Changedloinc_panels1 field changed
      • changedOutput schema / properties / panel / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "items": {
        -        "items": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "loinc_num": {
        -              "type": "string"
        -            },
        -            "name": {
        -              "type": "string"
        -            },
        -            "required": {
        -              "type": "boolean"
        -            },
        -            "sequence": {
        -              "maximum": 9007199254740991,
        -              "minimum": -9007199254740991,
        -              "type": "integer"
        -            }
        -          },
        -          "required": [
        -            "sequence",
        -            "loinc_num",
        -            "name",
        -            "required"
        -          ],
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "loinc_num": {
        -        "type": "string"
        -      },
        -      "name": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "loinc_num",
        -      "name",
        -      "items"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "items": {
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "loinc_num": {
        +              "type": "string"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "required": {
        +              "description": "Whether the item is required; null when the source form definition does not state it (the case for every panel the API serves today).",
        +              "type": [
        +                "boolean",
        +                "null"
        +              ]
        +            },
        +            "sequence": {
        +              "description": "Position in the form (1-based), i.e. display order.",
        +              "maximum": 9007199254740991,
        +              "minimum": -9007199254740991,
        +              "type": "integer"
        +            }
        +          },
        +          "required": [
        +            "sequence",
        +            "loinc_num",
        +            "name",
        +            "required"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "loinc_num": {
        +        "type": "string"
        +      },
        +      "name": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "loinc_num",
        +      "name",
        +      "items"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Removedmap_loinc_to_snomed
    • Changedterminology_diff2 fields changed
      • changedInput schema / properties / terminology / enum
        Previous value: -[
        -  "icd11",
        -  "icd10",
        -  "snomed",
        -  "loinc",
        -  "rxnorm",
        -  "mesh",
        -  "atc",
        -  "cid10"
        -]New value: +[
        +  "icd11",
        +  "icd10",
        +  "loinc",
        +  "rxnorm",
        +  "mesh",
        +  "atc",
        +  "cid10"
        +]
      • changedOutput schema / properties / terminology / enum
        Previous value: -[
        -  "icd11",
        -  "icd10",
        -  "snomed",
        -  "loinc",
        -  "rxnorm",
        -  "mesh",
        -  "atc",
        -  "cid10"
        -]New value: +[
        +  "icd11",
        +  "icd10",
        +  "loinc",
        +  "rxnorm",
        +  "mesh",
        +  "atc",
        +  "cid10"
        +]
    • Changedterminology_versions3 fields changed
      • changedInput schema / properties / terminology / description
        Previous value: -"Filter to a single terminology. Omit to return all 8."New value: +"Filter to a single terminology. Omit to return all 7."
      • changedInput schema / properties / terminology / enum
        Previous value: -[
        -  "icd11",
        -  "icd10",
        -  "snomed",
        -  "loinc",
        -  "rxnorm",
        -  "mesh",
        -  "atc",
        -  "cid10"
        -]New value: +[
        +  "icd11",
        +  "icd10",
        +  "loinc",
        +  "rxnorm",
        +  "mesh",
        +  "atc",
        +  "cid10"
        +]
      • changedOutput schema / properties / terminologies / items / properties / code / enum
        Previous value: -[
        -  "icd11",
        -  "icd10",
        -  "snomed",
        -  "loinc",
        -  "rxnorm",
        -  "mesh",
        -  "atc",
        -  "cid10"
        -]New value: +[
        +  "icd11",
        +  "icd10",
        +  "loinc",
        +  "rxnorm",
        +  "mesh",
        +  "atc",
        +  "cid10"
        +]
    • Changedvalidate_codes2 fields changed
      • changedInput schema / properties / codes / items / properties / terminology / enum
        Previous value: -[
        -  "icd11",
        -  "icd10",
        -  "snomed",
        -  "loinc",
        -  "rxnorm",
        -  "mesh",
        -  "atc",
        -  "cid10"
        -]New value: +[
        +  "icd11",
        +  "icd10",
        +  "loinc",
        +  "rxnorm",
        +  "mesh",
        +  "atc",
        +  "cid10"
        +]
      • changedOutput schema / properties / results / items / properties / terminology / enum
        Previous value: -[
        -  "icd11",
        -  "icd10",
        -  "snomed",
        -  "loinc",
        -  "rxnorm",
        -  "mesh",
        -  "atc",
        -  "cid10"
        -]New value: +[
        +  "icd11",
        +  "icd10",
        +  "loinc",
        +  "rxnorm",
        +  "mesh",
        +  "atc",
        +  "cid10"
        +]
  3. 2 tool updatesv1.17.1
    • Changedfetch1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedsearch1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
  4. 4 tool updatesv1.16.0
    • Changedrxnorm_classes3 fields changed
      • addedInput schema / properties / rxcui / anyOf
        Added value: +[
        +  {
        +    "pattern": "^\\d+$",
        +    "type": "string"
        +  },
        +  {
        +    "maximum": 9007199254740991,
        +    "minimum": 0,
        +    "type": "integer"
        +  }
        +]
      • removedInput schema / properties / rxcui / pattern
        Removed value: -"^\\d+$"
      • removedInput schema / properties / rxcui / type
        Removed value: -"string"
    • Changedrxnorm_concept17 fields changed
      • addedInput schema / properties / include_related / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "true",
        +      "false"
        +    ],
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / include_related / default
        Removed value: -false
      • changedInput schema / properties / include_related / description
        Previous value: -"Include related concepts (ingredients, brands, dose forms)"New value: +"Include related concepts (ingredients, brands, dose forms). Default false; true/false, also accepted as the strings \"true\"/\"false\""
      • removedInput schema / properties / include_related / type
        Removed value: -"boolean"
      • addedInput schema / properties / rxcui / anyOf
        Added value: +[
        +  {
        +    "pattern": "^\\d+$",
        +    "type": "string"
        +  },
        +  {
        +    "maximum": 9007199254740991,
        +    "minimum": 0,
        +    "type": "integer"
        +  }
        +]
      • changedInput schema / properties / rxcui / description
        Previous value: -"RxNorm Concept Unique Identifier"New value: +"RxNorm Concept Unique Identifier (string of digits or integer, e.g. \"161\" or 161)"
      • removedInput schema / properties / rxcui / pattern
        Removed value: -"^\\d+$"
      • removedInput schema / properties / rxcui / type
        Removed value: -"string"
      • addedOutput schema / properties / found
        Added value: +{
        +  "description": "false when RxNorm has no concept with this RxCUI (the lookup answered; the fields below are null)",
        +  "type": "boolean"
        +}
      • changedOutput schema / properties / language / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / name / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / status / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / suppress / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / synonym / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / tty / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / umlscui / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / required
        Previous value: -[
        -  "rxcui",
        -  "name",
        -  "synonym",
        -  "tty",
        -  "language",
        -  "suppress",
        -  "umlscui",
        -  "status",
        -  "remapped_to",
        -  "related_groups",
        -  "provenance",
        -  "attribution"
        -]New value: +[
        +  "rxcui",
        +  "found",
        +  "name",
        +  "synonym",
        +  "tty",
        +  "language",
        +  "suppress",
        +  "umlscui",
        +  "status",
        +  "remapped_to",
        +  "related_groups",
        +  "provenance",
        +  "attribution"
        +]
    • Changedrxnorm_ingredients3 fields changed
      • addedInput schema / properties / rxcui / anyOf
        Added value: +[
        +  {
        +    "pattern": "^\\d+$",
        +    "type": "string"
        +  },
        +  {
        +    "maximum": 9007199254740991,
        +    "minimum": 0,
        +    "type": "integer"
        +  }
        +]
      • removedInput schema / properties / rxcui / pattern
        Removed value: -"^\\d+$"
      • removedInput schema / properties / rxcui / type
        Removed value: -"string"
    • Changedrxnorm_ndc3 fields changed
      • addedInput schema / properties / rxcui / anyOf
        Added value: +[
        +  {
        +    "pattern": "^\\d+$",
        +    "type": "string"
        +  },
        +  {
        +    "maximum": 9007199254740991,
        +    "minimum": 0,
        +    "type": "integer"
        +  }
        +]
      • removedInput schema / properties / rxcui / pattern
        Removed value: -"^\\d+$"
      • removedInput schema / properties / rxcui / type
        Removed value: -"string"
  5. 33 tool updatesv1.15.0
    • Changedatc_classify3 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license"New value: +"Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "maximum": 9007199254740991,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Origin diagnostics of THIS source in this call (contract v1.1): requests made to the upstream, attempts summed across retries, anomalies worked around (kind + count); unstable=true when any anomaly happened. null when nothing was measured (bundled dataset, or response served entirely from cache)"
        +}
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedatc_lookup3 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license"New value: +"Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "maximum": 9007199254740991,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Origin diagnostics of THIS source in this call (contract v1.1): requests made to the upstream, attempts summed across retries, anomalies worked around (kind + count); unstable=true when any anomaly happened. null when nothing was measured (bundled dataset, or response served entirely from cache)"
        +}
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedatc_members3 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license"New value: +"Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "maximum": 9007199254740991,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Origin diagnostics of THIS source in this call (contract v1.1): requests made to the upstream, attempts summed across retries, anomalies worked around (kind + count); unstable=true when any anomaly happened. null when nothing was measured (bundled dataset, or response served entirely from cache)"
        +}
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedcid10_chapter3 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license"New value: +"Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "maximum": 9007199254740991,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Origin diagnostics of THIS source in this call (contract v1.1): requests made to the upstream, attempts summed across retries, anomalies worked around (kind + count); unstable=true when any anomaly happened. null when nothing was measured (bundled dataset, or response served entirely from cache)"
        +}
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedcid10_chapters3 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license"New value: +"Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "maximum": 9007199254740991,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Origin diagnostics of THIS source in this call (contract v1.1): requests made to the upstream, attempts summed across retries, anomalies worked around (kind + count); unstable=true when any anomaly happened. null when nothing was measured (bundled dataset, or response served entirely from cache)"
        +}
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedcid10_lookup3 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license"New value: +"Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "maximum": 9007199254740991,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Origin diagnostics of THIS source in this call (contract v1.1): requests made to the upstream, attempts summed across retries, anomalies worked around (kind + count); unstable=true when any anomaly happened. null when nothing was measured (bundled dataset, or response served entirely from cache)"
        +}
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedcid10_search3 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license"New value: +"Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "maximum": 9007199254740991,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Origin diagnostics of THIS source in this call (contract v1.1): requests made to the upstream, attempts summed across retries, anomalies worked around (kind + count); unstable=true when any anomaly happened. null when nothing was measured (bundled dataset, or response served entirely from cache)"
        +}
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedfetch3 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license"New value: +"Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "maximum": 9007199254740991,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Origin diagnostics of THIS source in this call (contract v1.1): requests made to the upstream, attempts summed across retries, anomalies worked around (kind + count); unstable=true when any anomaly happened. null when nothing was measured (bundled dataset, or response served entirely from cache)"
        +}
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedfind_equivalent4 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"One provenance block per upstream source that contributed to this response (contract v1.0; licenses are never merged)"New value: +"One provenance block per upstream source that contributed to this response (contract v1.1; licenses are never merged; each block carries the origin diagnostics of ITS source)"
      • addedOutput schema / properties / provenance / items / description
        Added value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"
      • addedOutput schema / properties / provenance / items / properties / retrieval
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "maximum": 9007199254740991,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Origin diagnostics of THIS source in this call (contract v1.1): requests made to the upstream, attempts summed across retries, anomalies worked around (kind + count); unstable=true when any anomaly happened. null when nothing was measured (bundled dataset, or response served entirely from cache)"
        +}
      • changedOutput schema / properties / provenance / items / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedicd11_chapters3 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license"New value: +"Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "maximum": 9007199254740991,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Origin diagnostics of THIS source in this call (contract v1.1): requests made to the upstream, attempts summed across retries, anomalies worked around (kind + count); unstable=true when any anomaly happened. null when nothing was measured (bundled dataset, or response served entirely from cache)"
        +}
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedicd11_hierarchy3 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license"New value: +"Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "maximum": 9007199254740991,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Origin diagnostics of THIS source in this call (contract v1.1): requests made to the upstream, attempts summed across retries, anomalies worked around (kind + count); unstable=true when any anomaly happened. null when nothing was measured (bundled dataset, or response served entirely from cache)"
        +}
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedicd11_lookup3 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license"New value: +"Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "maximum": 9007199254740991,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Origin diagnostics of THIS source in this call (contract v1.1): requests made to the upstream, attempts summed across retries, anomalies worked around (kind + count); unstable=true when any anomaly happened. null when nothing was measured (bundled dataset, or response served entirely from cache)"
        +}
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedicd11_postcoordination3 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license"New value: +"Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "maximum": 9007199254740991,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Origin diagnostics of THIS source in this call (contract v1.1): requests made to the upstream, attempts summed across retries, anomalies worked around (kind + count); unstable=true when any anomaly happened. null when nothing was measured (bundled dataset, or response served entirely from cache)"
        +}
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedicd11_search3 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license"New value: +"Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "maximum": 9007199254740991,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Origin diagnostics of THIS source in this call (contract v1.1): requests made to the upstream, attempts summed across retries, anomalies worked around (kind + count); unstable=true when any anomaly happened. null when nothing was measured (bundled dataset, or response served entirely from cache)"
        +}
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedloinc_answers3 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license"New value: +"Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "maximum": 9007199254740991,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Origin diagnostics of THIS source in this call (contract v1.1): requests made to the upstream, attempts summed across retries, anomalies worked around (kind + count); unstable=true when any anomaly happened. null when nothing was measured (bundled dataset, or response served entirely from cache)"
        +}
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedloinc_details3 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license"New value: +"Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "maximum": 9007199254740991,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Origin diagnostics of THIS source in this call (contract v1.1): requests made to the upstream, attempts summed across retries, anomalies worked around (kind + count); unstable=true when any anomaly happened. null when nothing was measured (bundled dataset, or response served entirely from cache)"
        +}
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedloinc_panels3 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license"New value: +"Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "maximum": 9007199254740991,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Origin diagnostics of THIS source in this call (contract v1.1): requests made to the upstream, attempts summed across retries, anomalies worked around (kind + count); unstable=true when any anomaly happened. null when nothing was measured (bundled dataset, or response served entirely from cache)"
        +}
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedloinc_search3 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license"New value: +"Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "maximum": 9007199254740991,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Origin diagnostics of THIS source in this call (contract v1.1): requests made to the upstream, attempts summed across retries, anomalies worked around (kind + count); unstable=true when any anomaly happened. null when nothing was measured (bundled dataset, or response served entirely from cache)"
        +}
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedmap_icd10_to_icd113 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license"New value: +"Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "maximum": 9007199254740991,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Origin diagnostics of THIS source in this call (contract v1.1): requests made to the upstream, attempts summed across retries, anomalies worked around (kind + count); unstable=true when any anomaly happened. null when nothing was measured (bundled dataset, or response served entirely from cache)"
        +}
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedmap_loinc_to_snomed3 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license"New value: +"Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "maximum": 9007199254740991,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Origin diagnostics of THIS source in this call (contract v1.1): requests made to the upstream, attempts summed across retries, anomalies worked around (kind + count); unstable=true when any anomaly happened. null when nothing was measured (bundled dataset, or response served entirely from cache)"
        +}
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedmesh_descriptor3 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license"New value: +"Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "maximum": 9007199254740991,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Origin diagnostics of THIS source in this call (contract v1.1): requests made to the upstream, attempts summed across retries, anomalies worked around (kind + count); unstable=true when any anomaly happened. null when nothing was measured (bundled dataset, or response served entirely from cache)"
        +}
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedmesh_qualifiers3 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license"New value: +"Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "maximum": 9007199254740991,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Origin diagnostics of THIS source in this call (contract v1.1): requests made to the upstream, attempts summed across retries, anomalies worked around (kind + count); unstable=true when any anomaly happened. null when nothing was measured (bundled dataset, or response served entirely from cache)"
        +}
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedmesh_search3 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license"New value: +"Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "maximum": 9007199254740991,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Origin diagnostics of THIS source in this call (contract v1.1): requests made to the upstream, attempts summed across retries, anomalies worked around (kind + count); unstable=true when any anomaly happened. null when nothing was measured (bundled dataset, or response served entirely from cache)"
        +}
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedmesh_tree3 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license"New value: +"Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "maximum": 9007199254740991,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Origin diagnostics of THIS source in this call (contract v1.1): requests made to the upstream, attempts summed across retries, anomalies worked around (kind + count); unstable=true when any anomaly happened. null when nothing was measured (bundled dataset, or response served entirely from cache)"
        +}
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedrxnorm_classes3 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license"New value: +"Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "maximum": 9007199254740991,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Origin diagnostics of THIS source in this call (contract v1.1): requests made to the upstream, attempts summed across retries, anomalies worked around (kind + count); unstable=true when any anomaly happened. null when nothing was measured (bundled dataset, or response served entirely from cache)"
        +}
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedrxnorm_concept3 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license"New value: +"Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "maximum": 9007199254740991,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Origin diagnostics of THIS source in this call (contract v1.1): requests made to the upstream, attempts summed across retries, anomalies worked around (kind + count); unstable=true when any anomaly happened. null when nothing was measured (bundled dataset, or response served entirely from cache)"
        +}
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedrxnorm_ingredients3 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license"New value: +"Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "maximum": 9007199254740991,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Origin diagnostics of THIS source in this call (contract v1.1): requests made to the upstream, attempts summed across retries, anomalies worked around (kind + count); unstable=true when any anomaly happened. null when nothing was measured (bundled dataset, or response served entirely from cache)"
        +}
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedrxnorm_ndc3 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license"New value: +"Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "maximum": 9007199254740991,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Origin diagnostics of THIS source in this call (contract v1.1): requests made to the upstream, attempts summed across retries, anomalies worked around (kind + count); unstable=true when any anomaly happened. null when nothing was measured (bundled dataset, or response served entirely from cache)"
        +}
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedrxnorm_search3 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license"New value: +"Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "maximum": 9007199254740991,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Origin diagnostics of THIS source in this call (contract v1.1): requests made to the upstream, attempts summed across retries, anomalies worked around (kind + count); unstable=true when any anomaly happened. null when nothing was measured (bundled dataset, or response served entirely from cache)"
        +}
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedsearch4 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"One provenance block per upstream source that contributed to this response (contract v1.0; licenses are never merged)"New value: +"One provenance block per upstream source that contributed to this response (contract v1.1; licenses are never merged; each block carries the origin diagnostics of ITS source)"
      • addedOutput schema / properties / provenance / items / description
        Added value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"
      • addedOutput schema / properties / provenance / items / properties / retrieval
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "maximum": 9007199254740991,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Origin diagnostics of THIS source in this call (contract v1.1): requests made to the upstream, attempts summed across retries, anomalies worked around (kind + count); unstable=true when any anomaly happened. null when nothing was measured (bundled dataset, or response served entirely from cache)"
        +}
      • changedOutput schema / properties / provenance / items / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedterminology_diff3 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license"New value: +"Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "maximum": 9007199254740991,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Origin diagnostics of THIS source in this call (contract v1.1): requests made to the upstream, attempts summed across retries, anomalies worked around (kind + count); unstable=true when any anomaly happened. null when nothing was measured (bundled dataset, or response served entirely from cache)"
        +}
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedterminology_versions3 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license"New value: +"Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "maximum": 9007199254740991,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Origin diagnostics of THIS source in this call (contract v1.1): requests made to the upstream, attempts summed across retries, anomalies worked around (kind + count); unstable=true when any anomaly happened. null when nothing was measured (bundled dataset, or response served entirely from cache)"
        +}
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedvalidate_codes4 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"One provenance block per upstream source that contributed to this response (contract v1.0; licenses are never merged)"New value: +"One provenance block per upstream source that contributed to this response (contract v1.1; licenses are never merged; each block carries the origin diagnostics of ITS source)"
      • addedOutput schema / properties / provenance / items / description
        Added value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"
      • addedOutput schema / properties / provenance / items / properties / retrieval
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "maximum": 9007199254740991,
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "maximum": 9007199254740991,
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Origin diagnostics of THIS source in this call (contract v1.1): requests made to the upstream, attempts summed across retries, anomalies worked around (kind + count); unstable=true when any anomaly happened. null when nothing was measured (bundled dataset, or response served entirely from cache)"
        +}
      • changedOutput schema / properties / provenance / items / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
  6. 1 tool updatev1.12.1
    • Changedcid10_search2 fields changed
      • changedInput schema / properties / query / description
        Previous value: -"Search term in Portuguese (e.g., \"diabetes\", \"infarto\", \"tuberculose\")"New value: +"Search terms in Portuguese, AND between words (e.g., \"diabetes\", \"infarto\", \"câncer de mama\"); accents ignored, everyday words resolved to CID-10 wording"
      • addedOutput schema / properties / vocabulary_notes
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
  7. 33 tool updatesv1.11.0
    • Changedatc_classify1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedatc_lookup1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedatc_members1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcid10_chapter1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcid10_chapters1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcid10_lookup1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedcid10_search1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Addedfetch
    • Changedfind_equivalent1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedicd11_chapters1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedicd11_hierarchy5 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / code / description
        Previous value: -"ICD-11 code to get hierarchy for"New value: +"ICD-11 code (e.g., \"BA00\", \"5A11\") or block range (e.g., \"5A10-5A2Y\")"
      • addedInput schema / properties / language
        Added value: +{
        +  "default": "en",
        +  "description": "Language code (default: en). Returns the source's OFFICIAL translation when it exists (e.g. 'pt' for official Portuguese); content is never machine-translated.",
        +  "enum": [
        +    "en",
        +    "es",
        +    "pt",
        +    "fr",
        +    "de",
        +    "it",
        +    "zh",
        +    "ja",
        +    "ar",
        +    "ru"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / uri
        Added value: +{
        +  "description": "Entity URI as returned by icd11_lookup, icd11_search or a previous icd11_hierarchy call",
        +  "format": "uri",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "code",
        -  "direction"
        -]New value: +[
        +  "direction"
        +]
    • Changedicd11_lookup1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedicd11_postcoordination1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedicd11_search1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedloinc_answers1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedloinc_details1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedloinc_panels1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedloinc_search1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedmap_icd10_to_icd111 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedmap_loinc_to_snomed1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedmesh_descriptor1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedmesh_qualifiers1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedmesh_search1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedmesh_tree1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedrxnorm_classes1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedrxnorm_concept1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedrxnorm_ingredients1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedrxnorm_ndc1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedrxnorm_search1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Addedsearch
    • Changedterminology_diff1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedterminology_versions1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedvalidate_codes1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
  8. 31 tool updatesv1.9.1
    • Changedatc_classify4 fields changed
      • removedOutput schema / properties / provenance / properties / data_vintage / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / data_vintage / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / license / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / license / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedatc_lookup4 fields changed
      • removedOutput schema / properties / provenance / properties / data_vintage / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / data_vintage / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / license / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / license / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedatc_members4 fields changed
      • removedOutput schema / properties / provenance / properties / data_vintage / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / data_vintage / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / license / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / license / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedcid10_chapter4 fields changed
      • removedOutput schema / properties / provenance / properties / data_vintage / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / data_vintage / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / license / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / license / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedcid10_chapters4 fields changed
      • removedOutput schema / properties / provenance / properties / data_vintage / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / data_vintage / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / license / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / license / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedcid10_lookup5 fields changed
      • changedOutput schema / properties / hit / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "causa_obito": {
        -        "type": "string"
        -      },
        -      "chapter_num": {
        -        "anyOf": [
        -          {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "classif": {
        -        "type": "string"
        -      },
        -      "code": {
        -        "type": "string"
        -      },
        -      "display": {
        -        "type": "string"
        -      },
        -      "excluidos": {
        -        "type": "string"
        -      },
        -      "group_range": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "level": {
        -        "enum": [
        -          "category",
        -          "subcategory"
        -        ],
        -        "type": "string"
        -      },
        -      "refer": {
        -        "type": "string"
        -      },
        -      "restr_sexo": {
        -        "type": "string"
        -      },
        -      "title": {
        -        "type": "string"
        -      },
        -      "title_short": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "level",
        -      "code",
        -      "display",
        -      "classif",
        -      "title",
        -      "title_short",
        -      "refer",
        -      "excluidos",
        -      "restr_sexo",
        -      "causa_obito",
        -      "chapter_num",
        -      "group_range"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "causa_obito": {
        +        "type": "string"
        +      },
        +      "chapter_num": {
        +        "anyOf": [
        +          {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "classif": {
        +        "type": "string"
        +      },
        +      "code": {
        +        "type": "string"
        +      },
        +      "display": {
        +        "type": "string"
        +      },
        +      "excluidos": {
        +        "type": "string"
        +      },
        +      "group_range": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "level": {
        +        "enum": [
        +          "category",
        +          "subcategory"
        +        ],
        +        "type": "string"
        +      },
        +      "refer": {
        +        "type": "string"
        +      },
        +      "restr_sexo": {
        +        "type": "string"
        +      },
        +      "title": {
        +        "type": "string"
        +      },
        +      "title_short": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "level",
        +      "code",
        +      "display",
        +      "classif",
        +      "title",
        +      "title_short",
        +      "refer",
        +      "excluidos",
        +      "restr_sexo",
        +      "causa_obito",
        +      "chapter_num",
        +      "group_range"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / provenance / properties / data_vintage / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / data_vintage / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / license / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / license / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedcid10_search6 fields changed
      • removedOutput schema / properties / hits / items / properties / group_range / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / hits / items / properties / group_range / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / data_vintage / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / data_vintage / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / license / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / license / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedfind_equivalent24 fields changed
      • removedOutput schema / properties / provenance / items / properties / data_vintage / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / items / properties / data_vintage / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / items / properties / license / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / items / properties / license / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / results / properties / icd11 / properties / error / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / results / properties / icd11 / properties / error / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / results / properties / icd11 / properties / items / items / properties / uri / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / results / properties / icd11 / properties / items / items / properties / uri / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / results / properties / loinc / properties / error / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / results / properties / loinc / properties / error / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / results / properties / loinc / properties / items / items / properties / uri / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / results / properties / loinc / properties / items / items / properties / uri / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / results / properties / mesh / properties / error / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / results / properties / mesh / properties / error / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / results / properties / mesh / properties / items / items / properties / uri / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / results / properties / mesh / properties / items / items / properties / uri / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / results / properties / rxnorm / properties / error / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / results / properties / rxnorm / properties / error / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / results / properties / rxnorm / properties / items / items / properties / uri / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / results / properties / rxnorm / properties / items / items / properties / uri / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / results / properties / snomed / properties / error / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / results / properties / snomed / properties / error / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / results / properties / snomed / properties / items / items / properties / uri / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / results / properties / snomed / properties / items / items / properties / uri / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedicd11_chapters12 fields changed
      • removedOutput schema / properties / chapters / items / properties / code / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / chapters / items / properties / code / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / chapters / items / properties / code_range / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / chapters / items / properties / code_range / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / chapters / items / properties / error / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / chapters / items / properties / error / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / chapters / items / properties / title / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / chapters / items / properties / title / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / data_vintage / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / data_vintage / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / license / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / license / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedicd11_hierarchy8 fields changed
      • removedOutput schema / properties / entities / items / properties / code / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / entities / items / properties / code / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / entities / items / properties / code_range / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / entities / items / properties / code_range / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / data_vintage / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / data_vintage / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / license / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / license / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedicd11_lookup22 fields changed
      • removedOutput schema / properties / block_id / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / block_id / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / browser_url / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / browser_url / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / class_kind / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / class_kind / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / code / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / code / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / code_range / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / code_range / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / coding_note / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / coding_note / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / definition / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / definition / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / diagnostic_criteria / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / diagnostic_criteria / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / long_definition / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / long_definition / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / data_vintage / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / data_vintage / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / license / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / license / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedicd11_postcoordination4 fields changed
      • removedOutput schema / properties / provenance / properties / data_vintage / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / data_vintage / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / license / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / license / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedicd11_search6 fields changed
      • removedOutput schema / properties / entities / items / properties / code / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / entities / items / properties / code / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / data_vintage / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / data_vintage / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / license / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / license / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedloinc_answers4 fields changed
      • removedOutput schema / properties / provenance / properties / data_vintage / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / data_vintage / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / license / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / license / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedloinc_details6 fields changed
      • removedOutput schema / properties / external_copyright_notice / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / external_copyright_notice / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / data_vintage / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / data_vintage / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / license / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / license / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedloinc_panels4 fields changed
      • removedOutput schema / properties / provenance / properties / data_vintage / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / data_vintage / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / license / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / license / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedloinc_search6 fields changed
      • removedOutput schema / properties / items / items / properties / external_copyright_notice / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / items / items / properties / external_copyright_notice / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / data_vintage / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / data_vintage / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / license / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / license / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedmap_icd10_to_icd114 fields changed
      • removedOutput schema / properties / provenance / properties / data_vintage / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / data_vintage / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / license / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / license / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedmap_loinc_to_snomed7 fields changed
      • changedOutput schema / properties / loinc_details / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "code": {
        -        "type": "string"
        -      },
        -      "component": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "long_common_name": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "property": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "system": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      }
        -    },
        -    "required": [
        -      "code",
        -      "long_common_name",
        -      "component",
        -      "system",
        -      "property"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "code": {
        +        "type": "string"
        +      },
        +      "component": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "long_common_name": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "property": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "system": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "required": [
        +      "code",
        +      "long_common_name",
        +      "component",
        +      "system",
        +      "property"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / mapping_sources / items / properties / url / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / mapping_sources / items / properties / url / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / data_vintage / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / data_vintage / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / license / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / license / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedmesh_descriptor4 fields changed
      • removedOutput schema / properties / provenance / properties / data_vintage / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / data_vintage / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / license / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / license / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedmesh_qualifiers4 fields changed
      • removedOutput schema / properties / provenance / properties / data_vintage / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / data_vintage / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / license / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / license / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedmesh_search4 fields changed
      • removedOutput schema / properties / provenance / properties / data_vintage / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / data_vintage / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / license / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / license / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedmesh_tree4 fields changed
      • removedOutput schema / properties / provenance / properties / data_vintage / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / data_vintage / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / license / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / license / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedrxnorm_classes4 fields changed
      • removedOutput schema / properties / provenance / properties / data_vintage / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / data_vintage / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / license / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / license / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedrxnorm_concept4 fields changed
      • removedOutput schema / properties / provenance / properties / data_vintage / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / data_vintage / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / license / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / license / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedrxnorm_ingredients4 fields changed
      • removedOutput schema / properties / provenance / properties / data_vintage / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / data_vintage / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / license / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / license / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedrxnorm_ndc8 fields changed
      • removedOutput schema / properties / ndc / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / ndc / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / data_vintage / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / data_vintage / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / license / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / license / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / rxcui / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / rxcui / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedrxnorm_search4 fields changed
      • removedOutput schema / properties / provenance / properties / data_vintage / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / data_vintage / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / license / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / license / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedterminology_diff10 fields changed
      • removedOutput schema / properties / changelog_url / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / changelog_url / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / from_version / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / from_version / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / data_vintage / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / data_vintage / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / license / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / license / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / to_version / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / to_version / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedterminology_versions8 fields changed
      • removedOutput schema / properties / provenance / properties / data_vintage / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / data_vintage / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / properties / license / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / properties / license / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / terminologies / items / properties / changelog_url / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / terminologies / items / properties / changelog_url / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / terminologies / items / properties / notes / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / terminologies / items / properties / notes / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedvalidate_codes12 fields changed
      • removedOutput schema / properties / provenance / items / properties / data_vintage / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / items / properties / data_vintage / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / provenance / items / properties / license / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / provenance / items / properties / license / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / results / items / properties / active / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / results / items / properties / active / type
        Added value: +[
        +  "boolean",
        +  "null"
        +]
      • removedOutput schema / properties / results / items / properties / error / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / results / items / properties / error / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / results / items / properties / replaced_by / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / results / items / properties / replaced_by / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / results / items / properties / title / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / results / items / properties / title / type
        Added value: +[
        +  "string",
        +  "null"
        +]
  9. 31 tool updatesv1.8.0
    • Changedatc_classify3 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "Canonical source URLs of this response (attribution list)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license",
        +  "properties": {
        +    "citation": {
        +      "description": "Ready-to-use citation/attribution string",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Version/release of the data as exposed by the source; null when not exposed"
        +    },
        +    "license": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "License / legal regime of the data"
        +    },
        +    "retrieved_at": {
        +      "description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Official upstream source of this data",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "Canonical URL of the source (API base or dataset release)",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "drug_name",
        -  "matches"
        -]New value: +[
        +  "drug_name",
        +  "matches",
        +  "provenance",
        +  "attribution"
        +]
    • Changedatc_lookup3 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "Canonical source URLs of this response (attribution list)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license",
        +  "properties": {
        +    "citation": {
        +      "description": "Ready-to-use citation/attribution string",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Version/release of the data as exposed by the source; null when not exposed"
        +    },
        +    "license": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "License / legal regime of the data"
        +    },
        +    "retrieved_at": {
        +      "description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Official upstream source of this data",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "Canonical URL of the source (API base or dataset release)",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "atc_code",
        -  "found",
        -  "details"
        -]New value: +[
        +  "atc_code",
        +  "found",
        +  "details",
        +  "provenance",
        +  "attribution"
        +]
    • Changedatc_members3 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "Canonical source URLs of this response (attribution list)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license",
        +  "properties": {
        +    "citation": {
        +      "description": "Ready-to-use citation/attribution string",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Version/release of the data as exposed by the source; null when not exposed"
        +    },
        +    "license": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "License / legal regime of the data"
        +    },
        +    "retrieved_at": {
        +      "description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Official upstream source of this data",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "Canonical URL of the source (API base or dataset release)",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "atc_code",
        -  "members"
        -]New value: +[
        +  "atc_code",
        +  "members",
        +  "provenance",
        +  "attribution"
        +]
    • Changedcid10_chapter3 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "Canonical source URLs of this response (attribution list)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license",
        +  "properties": {
        +    "citation": {
        +      "description": "Ready-to-use citation/attribution string",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Version/release of the data as exposed by the source; null when not exposed"
        +    },
        +    "license": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "License / legal regime of the data"
        +    },
        +    "retrieved_at": {
        +      "description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Official upstream source of this data",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "Canonical URL of the source (API base or dataset release)",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "num",
        -  "found",
        -  "chapter",
        -  "groups"
        -]New value: +[
        +  "num",
        +  "found",
        +  "chapter",
        +  "groups",
        +  "provenance",
        +  "attribution"
        +]
    • Changedcid10_chapters3 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "Canonical source URLs of this response (attribution list)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license",
        +  "properties": {
        +    "citation": {
        +      "description": "Ready-to-use citation/attribution string",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Version/release of the data as exposed by the source; null when not exposed"
        +    },
        +    "license": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "License / legal regime of the data"
        +    },
        +    "retrieved_at": {
        +      "description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Official upstream source of this data",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "Canonical URL of the source (API base or dataset release)",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "chapters"
        -]New value: +[
        +  "chapters",
        +  "provenance",
        +  "attribution"
        +]
    • Changedcid10_lookup3 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "Canonical source URLs of this response (attribution list)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license",
        +  "properties": {
        +    "citation": {
        +      "description": "Ready-to-use citation/attribution string",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Version/release of the data as exposed by the source; null when not exposed"
        +    },
        +    "license": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "License / legal regime of the data"
        +    },
        +    "retrieved_at": {
        +      "description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Official upstream source of this data",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "Canonical URL of the source (API base or dataset release)",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "code",
        -  "found",
        -  "hit"
        -]New value: +[
        +  "code",
        +  "found",
        +  "hit",
        +  "provenance",
        +  "attribution"
        +]
    • Changedcid10_search3 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "Canonical source URLs of this response (attribution list)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license",
        +  "properties": {
        +    "citation": {
        +      "description": "Ready-to-use citation/attribution string",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Version/release of the data as exposed by the source; null when not exposed"
        +    },
        +    "license": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "License / legal regime of the data"
        +    },
        +    "retrieved_at": {
        +      "description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Official upstream source of this data",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "Canonical URL of the source (API base or dataset release)",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "query",
        -  "level",
        -  "total_count",
        -  "shown_count",
        -  "hits"
        -]New value: +[
        +  "query",
        +  "level",
        +  "total_count",
        +  "shown_count",
        +  "hits",
        +  "provenance",
        +  "attribution"
        +]
    • Changedfind_equivalent26 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Maximum candidates returned PER terminology (1-10, default 5). This is a cap, not a page: the live fan-out has no stable cursor across five upstreams, so raise the limit instead of paging.",
        +  "maximum": 10,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "Canonical source URLs of this response (attribution list)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / groups
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "members": {
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "code": {
        +              "type": "string"
        +            },
        +            "match_score": {
        +              "maximum": 1,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "terminology": {
        +              "enum": [
        +                "icd11",
        +                "snomed",
        +                "loinc",
        +                "rxnorm",
        +                "mesh"
        +              ],
        +              "type": "string"
        +            },
        +            "title": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "terminology",
        +            "code",
        +            "title",
        +            "match_score"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "normalized_title": {
        +        "type": "string"
        +      },
        +      "terminologies": {
        +        "items": {
        +          "enum": [
        +            "icd11",
        +            "snomed",
        +            "loinc",
        +            "rxnorm",
        +            "mesh"
        +          ],
        +          "type": "string"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "normalized_title",
        +      "terminologies",
        +      "members"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "description": "One provenance block per upstream source that contributed to this response (contract v1.0; licenses are never merged)",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "citation": {
        +        "description": "Ready-to-use citation/attribution string",
        +        "type": "string"
        +      },
        +      "data_vintage": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "description": "Version/release of the data as exposed by the source; null when not exposed"
        +      },
        +      "license": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "description": "License / legal regime of the data"
        +      },
        +      "retrieved_at": {
        +        "description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant.",
        +        "type": "string"
        +      },
        +      "source": {
        +        "description": "Official upstream source of this data",
        +        "type": "string"
        +      },
        +      "source_url": {
        +        "description": "Canonical URL of the source (API base or dataset release)",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "source",
        +      "source_url",
        +      "data_vintage",
        +      "retrieved_at",
        +      "citation",
        +      "license"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / ranking
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "method": {
        +      "const": "lexical",
        +      "type": "string"
        +    },
        +    "note": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "method",
        +    "note"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / results / properties / icd11 / properties / items / items / properties / match_score
        Added value: +{
        +  "maximum": 1,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedOutput schema / properties / results / properties / icd11 / properties / items / items / properties / rank
        Added value: +{
        +  "maximum": 9007199254740991,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / results / properties / icd11 / properties / items / items / properties / uri
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / results / properties / icd11 / properties / items / items / required
        Previous value: -[
        -  "code",
        -  "title"
        -]New value: +[
        +  "code",
        +  "title",
        +  "uri",
        +  "match_score",
        +  "rank"
        +]
      • addedOutput schema / properties / results / properties / loinc / properties / items / items / properties / match_score
        Added value: +{
        +  "maximum": 1,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedOutput schema / properties / results / properties / loinc / properties / items / items / properties / rank
        Added value: +{
        +  "maximum": 9007199254740991,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / results / properties / loinc / properties / items / items / properties / uri
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / results / properties / loinc / properties / items / items / required
        Previous value: -[
        -  "code",
        -  "title"
        -]New value: +[
        +  "code",
        +  "title",
        +  "uri",
        +  "match_score",
        +  "rank"
        +]
      • addedOutput schema / properties / results / properties / mesh / properties / items / items / properties / match_score
        Added value: +{
        +  "maximum": 1,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedOutput schema / properties / results / properties / mesh / properties / items / items / properties / rank
        Added value: +{
        +  "maximum": 9007199254740991,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / results / properties / mesh / properties / items / items / properties / uri
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / results / properties / mesh / properties / items / items / required
        Previous value: -[
        -  "code",
        -  "title"
        -]New value: +[
        +  "code",
        +  "title",
        +  "uri",
        +  "match_score",
        +  "rank"
        +]
      • addedOutput schema / properties / results / properties / rxnorm / properties / items / items / properties / match_score
        Added value: +{
        +  "maximum": 1,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedOutput schema / properties / results / properties / rxnorm / properties / items / items / properties / rank
        Added value: +{
        +  "maximum": 9007199254740991,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / results / properties / rxnorm / properties / items / items / properties / uri
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / results / properties / rxnorm / properties / items / items / required
        Previous value: -[
        -  "code",
        -  "title"
        -]New value: +[
        +  "code",
        +  "title",
        +  "uri",
        +  "match_score",
        +  "rank"
        +]
      • addedOutput schema / properties / results / properties / snomed / properties / items / items / properties / match_score
        Added value: +{
        +  "maximum": 1,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedOutput schema / properties / results / properties / snomed / properties / items / items / properties / rank
        Added value: +{
        +  "maximum": 9007199254740991,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / results / properties / snomed / properties / items / items / properties / uri
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / results / properties / snomed / properties / items / items / required
        Previous value: -[
        -  "code",
        -  "title"
        -]New value: +[
        +  "code",
        +  "title",
        +  "uri",
        +  "match_score",
        +  "rank"
        +]
      • changedOutput schema / required
        Previous value: -[
        -  "term",
        -  "source_terminology",
        -  "searched_terminologies",
        -  "results"
        -]New value: +[
        +  "term",
        +  "source_terminology",
        +  "searched_terminologies",
        +  "results",
        +  "groups",
        +  "ranking",
        +  "provenance",
        +  "attribution"
        +]
    • Changedicd11_chapters4 fields changed
      • changedInput schema / properties / language / description
        Previous value: -"Language code (default: en)"New value: +"Language code (default: en). Returns the source's OFFICIAL translation when it exists (e.g. 'pt' for official Portuguese); content is never machine-translated."
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "Canonical source URLs of this response (attribution list)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license",
        +  "properties": {
        +    "citation": {
        +      "description": "Ready-to-use citation/attribution string",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Version/release of the data as exposed by the source; null when not exposed"
        +    },
        +    "license": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "License / legal regime of the data"
        +    },
        +    "retrieved_at": {
        +      "description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Official upstream source of this data",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "Canonical URL of the source (API base or dataset release)",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "chapters"
        -]New value: +[
        +  "chapters",
        +  "provenance",
        +  "attribution"
        +]
    • Changedicd11_hierarchy3 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "Canonical source URLs of this response (attribution list)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license",
        +  "properties": {
        +    "citation": {
        +      "description": "Ready-to-use citation/attribution string",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Version/release of the data as exposed by the source; null when not exposed"
        +    },
        +    "license": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "License / legal regime of the data"
        +    },
        +    "retrieved_at": {
        +      "description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Official upstream source of this data",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "Canonical URL of the source (API base or dataset release)",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "code",
        -  "direction",
        -  "entities"
        -]New value: +[
        +  "code",
        +  "direction",
        +  "entities",
        +  "provenance",
        +  "attribution"
        +]
    • Changedicd11_lookup4 fields changed
      • changedInput schema / properties / language / description
        Previous value: -"Language code (default: en)"New value: +"Language code (default: en). Returns the source's OFFICIAL translation when it exists (e.g. 'pt' for official Portuguese); content is never machine-translated."
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "Canonical source URLs of this response (attribution list)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license",
        +  "properties": {
        +    "citation": {
        +      "description": "Ready-to-use citation/attribution string",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Version/release of the data as exposed by the source; null when not exposed"
        +    },
        +    "license": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "License / legal regime of the data"
        +    },
        +    "retrieved_at": {
        +      "description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Official upstream source of this data",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "Canonical URL of the source (API base or dataset release)",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "code",
        -  "code_range",
        -  "uri",
        -  "title",
        -  "class_kind",
        -  "block_id",
        -  "definition",
        -  "long_definition",
        -  "diagnostic_criteria",
        -  "coding_note",
        -  "exclusions",
        -  "inclusions",
        -  "index_terms",
        -  "browser_url"
        -]New value: +[
        +  "code",
        +  "code_range",
        +  "uri",
        +  "title",
        +  "class_kind",
        +  "block_id",
        +  "definition",
        +  "long_definition",
        +  "diagnostic_criteria",
        +  "coding_note",
        +  "exclusions",
        +  "inclusions",
        +  "index_terms",
        +  "browser_url",
        +  "provenance",
        +  "attribution"
        +]
    • Changedicd11_postcoordination3 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "Canonical source URLs of this response (attribution list)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license",
        +  "properties": {
        +    "citation": {
        +      "description": "Ready-to-use citation/attribution string",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Version/release of the data as exposed by the source; null when not exposed"
        +    },
        +    "license": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "License / legal regime of the data"
        +    },
        +    "retrieved_at": {
        +      "description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Official upstream source of this data",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "Canonical URL of the source (API base or dataset release)",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "code",
        -  "axes"
        -]New value: +[
        +  "code",
        +  "axes",
        +  "provenance",
        +  "attribution"
        +]
    • Changedicd11_search4 fields changed
      • changedInput schema / properties / language / description
        Previous value: -"Language code (default: en)"New value: +"Language code (default: en). Returns the source's OFFICIAL translation when it exists (e.g. 'pt' for official Portuguese); content is never machine-translated."
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "Canonical source URLs of this response (attribution list)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license",
        +  "properties": {
        +    "citation": {
        +      "description": "Ready-to-use citation/attribution string",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Version/release of the data as exposed by the source; null when not exposed"
        +    },
        +    "license": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "License / legal regime of the data"
        +    },
        +    "retrieved_at": {
        +      "description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Official upstream source of this data",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "Canonical URL of the source (API base or dataset release)",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "query",
        -  "total_count",
        -  "entities"
        -]New value: +[
        +  "query",
        +  "total_count",
        +  "entities",
        +  "provenance",
        +  "attribution"
        +]
    • Changedloinc_answers3 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "Canonical source URLs of this response (attribution list)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license",
        +  "properties": {
        +    "citation": {
        +      "description": "Ready-to-use citation/attribution string",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Version/release of the data as exposed by the source; null when not exposed"
        +    },
        +    "license": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "License / legal regime of the data"
        +    },
        +    "retrieved_at": {
        +      "description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Official upstream source of this data",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "Canonical URL of the source (API base or dataset release)",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "loinc_num",
        -  "answers"
        -]New value: +[
        +  "loinc_num",
        +  "answers",
        +  "provenance",
        +  "attribution"
        +]
    • Changedloinc_details4 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "Canonical source URLs of this response (attribution list)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / external_copyright_notice
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license",
        +  "properties": {
        +    "citation": {
        +      "description": "Ready-to-use citation/attribution string",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Version/release of the data as exposed by the source; null when not exposed"
        +    },
        +    "license": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "License / legal regime of the data"
        +    },
        +    "retrieved_at": {
        +      "description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Official upstream source of this data",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "Canonical URL of the source (API base or dataset release)",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "loinc_num",
        -  "long_common_name",
        -  "short_name",
        -  "component",
        -  "property",
        -  "time_aspect",
        -  "system",
        -  "scale_type",
        -  "method_type",
        -  "class",
        -  "status"
        -]New value: +[
        +  "loinc_num",
        +  "long_common_name",
        +  "short_name",
        +  "component",
        +  "property",
        +  "time_aspect",
        +  "system",
        +  "scale_type",
        +  "method_type",
        +  "class",
        +  "status",
        +  "external_copyright_notice",
        +  "provenance",
        +  "attribution"
        +]
    • Changedloinc_panels3 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "Canonical source URLs of this response (attribution list)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license",
        +  "properties": {
        +    "citation": {
        +      "description": "Ready-to-use citation/attribution string",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Version/release of the data as exposed by the source; null when not exposed"
        +    },
        +    "license": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "License / legal regime of the data"
        +    },
        +    "retrieved_at": {
        +      "description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Official upstream source of this data",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "Canonical URL of the source (API base or dataset release)",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "loinc_num",
        -  "panel"
        -]New value: +[
        +  "loinc_num",
        +  "panel",
        +  "provenance",
        +  "attribution"
        +]
    • Changedloinc_search5 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "Canonical source URLs of this response (attribution list)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / items / items / properties / external_copyright_notice
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / items / items / required
        Previous value: -[
        -  "loinc_num",
        -  "long_common_name",
        -  "short_name",
        -  "component",
        -  "property",
        -  "time_aspect",
        -  "system",
        -  "scale_type",
        -  "method_type",
        -  "class",
        -  "status"
        -]New value: +[
        +  "loinc_num",
        +  "long_common_name",
        +  "short_name",
        +  "component",
        +  "property",
        +  "time_aspect",
        +  "system",
        +  "scale_type",
        +  "method_type",
        +  "class",
        +  "status",
        +  "external_copyright_notice"
        +]
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license",
        +  "properties": {
        +    "citation": {
        +      "description": "Ready-to-use citation/attribution string",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Version/release of the data as exposed by the source; null when not exposed"
        +    },
        +    "license": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "License / legal regime of the data"
        +    },
        +    "retrieved_at": {
        +      "description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Official upstream source of this data",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "Canonical URL of the source (API base or dataset release)",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "query",
        -  "total_count",
        -  "shown_count",
        -  "items"
        -]New value: +[
        +  "query",
        +  "total_count",
        +  "shown_count",
        +  "items",
        +  "provenance",
        +  "attribution"
        +]
    • Changedmap_icd10_to_icd113 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "Canonical source URLs of this response (attribution list)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license",
        +  "properties": {
        +    "citation": {
        +      "description": "Ready-to-use citation/attribution string",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Version/release of the data as exposed by the source; null when not exposed"
        +    },
        +    "license": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "License / legal regime of the data"
        +    },
        +    "retrieved_at": {
        +      "description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Official upstream source of this data",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "Canonical URL of the source (API base or dataset release)",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "query",
        -  "found",
        -  "icd10",
        -  "primary",
        -  "alternatives",
        -  "source"
        -]New value: +[
        +  "query",
        +  "found",
        +  "icd10",
        +  "primary",
        +  "alternatives",
        +  "source",
        +  "provenance",
        +  "attribution"
        +]
    • Changedmap_loinc_to_snomed3 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "Canonical source URLs of this response (attribution list)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license",
        +  "properties": {
        +    "citation": {
        +      "description": "Ready-to-use citation/attribution string",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Version/release of the data as exposed by the source; null when not exposed"
        +    },
        +    "license": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "License / legal regime of the data"
        +    },
        +    "retrieved_at": {
        +      "description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Official upstream source of this data",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "Canonical URL of the source (API base or dataset release)",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "loinc_code",
        -  "loinc_details",
        -  "status",
        -  "guidance",
        -  "mapping_sources"
        -]New value: +[
        +  "loinc_code",
        +  "loinc_details",
        +  "status",
        +  "guidance",
        +  "mapping_sources",
        +  "provenance",
        +  "attribution"
        +]
    • Changedmesh_descriptor4 fields changed
      • changedInput schema / properties / language / description
        Previous value: -"Language code (default: en)"New value: +"Language code (default: en). Returns the source's OFFICIAL translation when it exists (e.g. 'pt' for official Portuguese); content is never machine-translated."
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "Canonical source URLs of this response (attribution list)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license",
        +  "properties": {
        +    "citation": {
        +      "description": "Ready-to-use citation/attribution string",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Version/release of the data as exposed by the source; null when not exposed"
        +    },
        +    "license": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "License / legal regime of the data"
        +    },
        +    "retrieved_at": {
        +      "description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Official upstream source of this data",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "Canonical URL of the source (API base or dataset release)",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "uri",
        -  "label",
        -  "scope_note",
        -  "tree_numbers",
        -  "concepts",
        -  "qualifiers"
        -]New value: +[
        +  "id",
        +  "uri",
        +  "label",
        +  "scope_note",
        +  "tree_numbers",
        +  "concepts",
        +  "qualifiers",
        +  "provenance",
        +  "attribution"
        +]
    • Changedmesh_qualifiers3 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "Canonical source URLs of this response (attribution list)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license",
        +  "properties": {
        +    "citation": {
        +      "description": "Ready-to-use citation/attribution string",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Version/release of the data as exposed by the source; null when not exposed"
        +    },
        +    "license": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "License / legal regime of the data"
        +    },
        +    "retrieved_at": {
        +      "description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Official upstream source of this data",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "Canonical URL of the source (API base or dataset release)",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "mesh_id",
        -  "qualifiers"
        -]New value: +[
        +  "mesh_id",
        +  "qualifiers",
        +  "provenance",
        +  "attribution"
        +]
    • Changedmesh_search4 fields changed
      • changedInput schema / properties / language / description
        Previous value: -"Language code (default: en)"New value: +"Language code (default: en). Returns the source's OFFICIAL translation when it exists (e.g. 'pt' for official Portuguese); content is never machine-translated."
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "Canonical source URLs of this response (attribution list)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license",
        +  "properties": {
        +    "citation": {
        +      "description": "Ready-to-use citation/attribution string",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Version/release of the data as exposed by the source; null when not exposed"
        +    },
        +    "license": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "License / legal regime of the data"
        +    },
        +    "retrieved_at": {
        +      "description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Official upstream source of this data",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "Canonical URL of the source (API base or dataset release)",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "query",
        -  "match",
        -  "total_count",
        -  "descriptors"
        -]New value: +[
        +  "query",
        +  "match",
        +  "total_count",
        +  "descriptors",
        +  "provenance",
        +  "attribution"
        +]
    • Changedmesh_tree3 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "Canonical source URLs of this response (attribution list)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license",
        +  "properties": {
        +    "citation": {
        +      "description": "Ready-to-use citation/attribution string",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Version/release of the data as exposed by the source; null when not exposed"
        +    },
        +    "license": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "License / legal regime of the data"
        +    },
        +    "retrieved_at": {
        +      "description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Official upstream source of this data",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "Canonical URL of the source (API base or dataset release)",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "mesh_id",
        -  "tree_numbers"
        -]New value: +[
        +  "mesh_id",
        +  "tree_numbers",
        +  "provenance",
        +  "attribution"
        +]
    • Changedrxnorm_classes3 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "Canonical source URLs of this response (attribution list)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license",
        +  "properties": {
        +    "citation": {
        +      "description": "Ready-to-use citation/attribution string",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Version/release of the data as exposed by the source; null when not exposed"
        +    },
        +    "license": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "License / legal regime of the data"
        +    },
        +    "retrieved_at": {
        +      "description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Official upstream source of this data",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "Canonical URL of the source (API base or dataset release)",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "rxcui",
        -  "classes"
        -]New value: +[
        +  "rxcui",
        +  "classes",
        +  "provenance",
        +  "attribution"
        +]
    • Changedrxnorm_concept3 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "Canonical source URLs of this response (attribution list)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license",
        +  "properties": {
        +    "citation": {
        +      "description": "Ready-to-use citation/attribution string",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Version/release of the data as exposed by the source; null when not exposed"
        +    },
        +    "license": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "License / legal regime of the data"
        +    },
        +    "retrieved_at": {
        +      "description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Official upstream source of this data",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "Canonical URL of the source (API base or dataset release)",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "rxcui",
        -  "name",
        -  "synonym",
        -  "tty",
        -  "language",
        -  "suppress",
        -  "umlscui",
        -  "status",
        -  "remapped_to",
        -  "related_groups"
        -]New value: +[
        +  "rxcui",
        +  "name",
        +  "synonym",
        +  "tty",
        +  "language",
        +  "suppress",
        +  "umlscui",
        +  "status",
        +  "remapped_to",
        +  "related_groups",
        +  "provenance",
        +  "attribution"
        +]
    • Changedrxnorm_ingredients3 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "Canonical source URLs of this response (attribution list)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license",
        +  "properties": {
        +    "citation": {
        +      "description": "Ready-to-use citation/attribution string",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Version/release of the data as exposed by the source; null when not exposed"
        +    },
        +    "license": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "License / legal regime of the data"
        +    },
        +    "retrieved_at": {
        +      "description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Official upstream source of this data",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "Canonical URL of the source (API base or dataset release)",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "rxcui",
        -  "ingredients"
        -]New value: +[
        +  "rxcui",
        +  "ingredients",
        +  "provenance",
        +  "attribution"
        +]
    • Changedrxnorm_ndc3 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "Canonical source URLs of this response (attribution list)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license",
        +  "properties": {
        +    "citation": {
        +      "description": "Ready-to-use citation/attribution string",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Version/release of the data as exposed by the source; null when not exposed"
        +    },
        +    "license": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "License / legal regime of the data"
        +    },
        +    "retrieved_at": {
        +      "description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Official upstream source of this data",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "Canonical URL of the source (API base or dataset release)",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "query_mode",
        -  "rxcui",
        -  "ndc",
        -  "ndcs"
        -]New value: +[
        +  "query_mode",
        +  "rxcui",
        +  "ndc",
        +  "ndcs",
        +  "provenance",
        +  "attribution"
        +]
    • Changedrxnorm_search3 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "Canonical source URLs of this response (attribution list)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license",
        +  "properties": {
        +    "citation": {
        +      "description": "Ready-to-use citation/attribution string",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Version/release of the data as exposed by the source; null when not exposed"
        +    },
        +    "license": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "License / legal regime of the data"
        +    },
        +    "retrieved_at": {
        +      "description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Official upstream source of this data",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "Canonical URL of the source (API base or dataset release)",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "query",
        -  "total_count",
        -  "drugs"
        -]New value: +[
        +  "query",
        +  "total_count",
        +  "drugs",
        +  "provenance",
        +  "attribution"
        +]
    • Changedterminology_diff3 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "Canonical source URLs of this response (attribution list)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license",
        +  "properties": {
        +    "citation": {
        +      "description": "Ready-to-use citation/attribution string",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Version/release of the data as exposed by the source; null when not exposed"
        +    },
        +    "license": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "License / legal regime of the data"
        +    },
        +    "retrieved_at": {
        +      "description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Official upstream source of this data",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "Canonical URL of the source (API base or dataset release)",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "terminology",
        -  "from_version",
        -  "to_version",
        -  "diff_available",
        -  "message",
        -  "changelog_url",
        -  "bundled_versions",
        -  "cross_revision_summary"
        -]New value: +[
        +  "terminology",
        +  "from_version",
        +  "to_version",
        +  "diff_available",
        +  "message",
        +  "changelog_url",
        +  "bundled_versions",
        +  "cross_revision_summary",
        +  "provenance",
        +  "attribution"
        +]
    • Changedterminology_versions3 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "Canonical source URLs of this response (attribution list)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Provenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license",
        +  "properties": {
        +    "citation": {
        +      "description": "Ready-to-use citation/attribution string",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Version/release of the data as exposed by the source; null when not exposed"
        +    },
        +    "license": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "License / legal regime of the data"
        +    },
        +    "retrieved_at": {
        +      "description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Official upstream source of this data",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "Canonical URL of the source (API base or dataset release)",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "generated",
        -  "total",
        -  "terminologies"
        -]New value: +[
        +  "generated",
        +  "total",
        +  "terminologies",
        +  "provenance",
        +  "attribution"
        +]
    • Changedvalidate_codes3 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "Canonical source URLs of this response (attribution list)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "description": "One provenance block per upstream source that contributed to this response (contract v1.0; licenses are never merged)",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "citation": {
        +        "description": "Ready-to-use citation/attribution string",
        +        "type": "string"
        +      },
        +      "data_vintage": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "description": "Version/release of the data as exposed by the source; null when not exposed"
        +      },
        +      "license": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "description": "License / legal regime of the data"
        +      },
        +      "retrieved_at": {
        +        "description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant.",
        +        "type": "string"
        +      },
        +      "source": {
        +        "description": "Official upstream source of this data",
        +        "type": "string"
        +      },
        +      "source_url": {
        +        "description": "Canonical URL of the source (API base or dataset release)",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "source",
        +      "source_url",
        +      "data_vintage",
        +      "retrieved_at",
        +      "citation",
        +      "license"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "total",
        -  "valid_count",
        -  "invalid_count",
        -  "error_count",
        -  "results"
        -]New value: +[
        +  "total",
        +  "valid_count",
        +  "invalid_count",
        +  "error_count",
        +  "results",
        +  "provenance",
        +  "attribution"
        +]
  10. 31 tool updatesv1.5.7
    • Changedatc_classify1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedatc_lookup1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedatc_members1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcid10_chapter4 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / properties / chapter / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "code_end": {
        -        "type": "string"
        -      },
        -      "code_start": {
        -        "type": "string"
        -      },
        -      "num": {
        -        "type": "integer"
        -      },
        -      "title": {
        -        "type": "string"
        -      },
        -      "title_short": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "num",
        -      "code_start",
        -      "code_end",
        -      "title",
        -      "title_short"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "code_end": {
        +        "type": "string"
        +      },
        +      "code_start": {
        +        "type": "string"
        +      },
        +      "num": {
        +        "maximum": 9007199254740991,
        +        "minimum": -9007199254740991,
        +        "type": "integer"
        +      },
        +      "title": {
        +        "type": "string"
        +      },
        +      "title_short": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "num",
        +      "code_start",
        +      "code_end",
        +      "title",
        +      "title_short"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / num / maximum
        Added value: +9007199254740991
      • addedOutput schema / properties / num / minimum
        Added value: +-9007199254740991
    • Changedcid10_chapters3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedOutput schema / properties / chapters / items / properties / num / maximum
        Added value: +9007199254740991
      • addedOutput schema / properties / chapters / items / properties / num / minimum
        Added value: +-9007199254740991
    • Changedcid10_lookup2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / properties / hit / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "causa_obito": {
        -        "type": "string"
        -      },
        -      "chapter_num": {
        -        "anyOf": [
        -          {
        -            "type": "integer"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "classif": {
        -        "type": "string"
        -      },
        -      "code": {
        -        "type": "string"
        -      },
        -      "display": {
        -        "type": "string"
        -      },
        -      "excluidos": {
        -        "type": "string"
        -      },
        -      "group_range": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "level": {
        -        "enum": [
        -          "category",
        -          "subcategory"
        -        ],
        -        "type": "string"
        -      },
        -      "refer": {
        -        "type": "string"
        -      },
        -      "restr_sexo": {
        -        "type": "string"
        -      },
        -      "title": {
        -        "type": "string"
        -      },
        -      "title_short": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "level",
        -      "code",
        -      "display",
        -      "classif",
        -      "title",
        -      "title_short",
        -      "refer",
        -      "excluidos",
        -      "restr_sexo",
        -      "causa_obito",
        -      "chapter_num",
        -      "group_range"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "causa_obito": {
        +        "type": "string"
        +      },
        +      "chapter_num": {
        +        "anyOf": [
        +          {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "classif": {
        +        "type": "string"
        +      },
        +      "code": {
        +        "type": "string"
        +      },
        +      "display": {
        +        "type": "string"
        +      },
        +      "excluidos": {
        +        "type": "string"
        +      },
        +      "group_range": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "level": {
        +        "enum": [
        +          "category",
        +          "subcategory"
        +        ],
        +        "type": "string"
        +      },
        +      "refer": {
        +        "type": "string"
        +      },
        +      "restr_sexo": {
        +        "type": "string"
        +      },
        +      "title": {
        +        "type": "string"
        +      },
        +      "title_short": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "level",
        +      "code",
        +      "display",
        +      "classif",
        +      "title",
        +      "title_short",
        +      "refer",
        +      "excluidos",
        +      "restr_sexo",
        +      "causa_obito",
        +      "chapter_num",
        +      "group_range"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcid10_search8 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / properties / hits / items / properties / chapter_num / anyOf
        Previous value: -[
        -  {
        -    "type": "integer"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maximum": 9007199254740991,
        +    "minimum": -9007199254740991,
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / hits / items / properties / group_range / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / hits / items / properties / group_range / type
        Removed value: -[
        -  "string",
        -  "null"
        -]
      • addedOutput schema / properties / shown_count / maximum
        Added value: +9007199254740991
      • addedOutput schema / properties / shown_count / minimum
        Added value: +-9007199254740991
      • addedOutput schema / properties / total_count / maximum
        Added value: +9007199254740991
      • addedOutput schema / properties / total_count / minimum
        Added value: +-9007199254740991
    • Changedfind_equivalent11 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedOutput schema / properties / results / properties / icd11 / properties / error / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / results / properties / icd11 / properties / error / type
        Removed value: -[
        -  "string",
        -  "null"
        -]
      • addedOutput schema / properties / results / properties / loinc / properties / error / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / results / properties / loinc / properties / error / type
        Removed value: -[
        -  "string",
        -  "null"
        -]
      • addedOutput schema / properties / results / properties / mesh / properties / error / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / results / properties / mesh / properties / error / type
        Removed value: -[
        -  "string",
        -  "null"
        -]
      • addedOutput schema / properties / results / properties / rxnorm / properties / error / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / results / properties / rxnorm / properties / error / type
        Removed value: -[
        -  "string",
        -  "null"
        -]
      • addedOutput schema / properties / results / properties / snomed / properties / error / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / results / properties / snomed / properties / error / type
        Removed value: -[
        -  "string",
        -  "null"
        -]
    • Changedicd11_chapters11 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedOutput schema / properties / chapters / items / properties / code / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / chapters / items / properties / code / type
        Removed value: -[
        -  "string",
        -  "null"
        -]
      • addedOutput schema / properties / chapters / items / properties / code_range / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / chapters / items / properties / code_range / type
        Removed value: -[
        -  "string",
        -  "null"
        -]
      • addedOutput schema / properties / chapters / items / properties / error / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / chapters / items / properties / error / type
        Removed value: -[
        -  "string",
        -  "null"
        -]
      • addedOutput schema / properties / chapters / items / properties / number / maximum
        Added value: +9007199254740991
      • addedOutput schema / properties / chapters / items / properties / number / minimum
        Added value: +-9007199254740991
      • addedOutput schema / properties / chapters / items / properties / title / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / chapters / items / properties / title / type
        Removed value: -[
        -  "string",
        -  "null"
        -]
    • Changedicd11_hierarchy5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedOutput schema / properties / entities / items / properties / code / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / entities / items / properties / code / type
        Removed value: -[
        -  "string",
        -  "null"
        -]
      • addedOutput schema / properties / entities / items / properties / code_range / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / entities / items / properties / code_range / type
        Removed value: -[
        -  "string",
        -  "null"
        -]
    • Changedicd11_lookup19 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedOutput schema / properties / block_id / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / block_id / type
        Removed value: -[
        -  "string",
        -  "null"
        -]
      • addedOutput schema / properties / browser_url / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / browser_url / type
        Removed value: -[
        -  "string",
        -  "null"
        -]
      • addedOutput schema / properties / class_kind / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / class_kind / type
        Removed value: -[
        -  "string",
        -  "null"
        -]
      • addedOutput schema / properties / code / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / code / type
        Removed value: -[
        -  "string",
        -  "null"
        -]
      • addedOutput schema / properties / code_range / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / code_range / type
        Removed value: -[
        -  "string",
        -  "null"
        -]
      • addedOutput schema / properties / coding_note / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / coding_note / type
        Removed value: -[
        -  "string",
        -  "null"
        -]
      • addedOutput schema / properties / definition / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / definition / type
        Removed value: -[
        -  "string",
        -  "null"
        -]
      • addedOutput schema / properties / diagnostic_criteria / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / diagnostic_criteria / type
        Removed value: -[
        -  "string",
        -  "null"
        -]
      • addedOutput schema / properties / long_definition / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / long_definition / type
        Removed value: -[
        -  "string",
        -  "null"
        -]
    • Changedicd11_postcoordination2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / properties / axes / items / properties / value_count / anyOf
        Previous value: -[
        -  {
        -    "type": "integer"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maximum": 9007199254740991,
        +    "minimum": -9007199254740991,
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedicd11_search5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedOutput schema / properties / entities / items / properties / code / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / entities / items / properties / code / type
        Removed value: -[
        -  "string",
        -  "null"
        -]
      • addedOutput schema / properties / total_count / maximum
        Added value: +9007199254740991
      • addedOutput schema / properties / total_count / minimum
        Added value: +-9007199254740991
    • Changedloinc_answers3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedOutput schema / properties / answers / items / properties / sequence / maximum
        Added value: +9007199254740991
      • addedOutput schema / properties / answers / items / properties / sequence / minimum
        Added value: +-9007199254740991
    • Changedloinc_details1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedloinc_panels2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / properties / panel / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "items": {
        -        "items": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "loinc_num": {
        -              "type": "string"
        -            },
        -            "name": {
        -              "type": "string"
        -            },
        -            "required": {
        -              "type": "boolean"
        -            },
        -            "sequence": {
        -              "type": "integer"
        -            }
        -          },
        -          "required": [
        -            "sequence",
        -            "loinc_num",
        -            "name",
        -            "required"
        -          ],
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "loinc_num": {
        -        "type": "string"
        -      },
        -      "name": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "loinc_num",
        -      "name",
        -      "items"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "items": {
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "loinc_num": {
        +              "type": "string"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "required": {
        +              "type": "boolean"
        +            },
        +            "sequence": {
        +              "maximum": 9007199254740991,
        +              "minimum": -9007199254740991,
        +              "type": "integer"
        +            }
        +          },
        +          "required": [
        +            "sequence",
        +            "loinc_num",
        +            "name",
        +            "required"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "loinc_num": {
        +        "type": "string"
        +      },
        +      "name": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "loinc_num",
        +      "name",
        +      "items"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedloinc_search5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedOutput schema / properties / shown_count / maximum
        Added value: +9007199254740991
      • addedOutput schema / properties / shown_count / minimum
        Added value: +-9007199254740991
      • addedOutput schema / properties / total_count / maximum
        Added value: +9007199254740991
      • addedOutput schema / properties / total_count / minimum
        Added value: +-9007199254740991
    • Changedmap_icd10_to_icd115 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedOutput schema / properties / alternatives / items / properties / depth / maximum
        Added value: +9007199254740991
      • addedOutput schema / properties / alternatives / items / properties / depth / minimum
        Added value: +-9007199254740991
      • changedOutput schema / properties / icd10 / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "chapter": {
        -        "type": "string"
        -      },
        -      "code": {
        -        "type": "string"
        -      },
        -      "depth": {
        -        "type": "integer"
        -      },
        -      "title": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "code",
        -      "title",
        -      "chapter",
        -      "depth"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "chapter": {
        +        "type": "string"
        +      },
        +      "code": {
        +        "type": "string"
        +      },
        +      "depth": {
        +        "maximum": 9007199254740991,
        +        "minimum": -9007199254740991,
        +        "type": "integer"
        +      },
        +      "title": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "code",
        +      "title",
        +      "chapter",
        +      "depth"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / primary / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "chapter": {
        -        "type": "string"
        -      },
        -      "classKind": {
        -        "type": "string"
        -      },
        -      "code": {
        -        "type": "string"
        -      },
        -      "depth": {
        -        "type": "integer"
        -      },
        -      "foundationUri": {
        -        "type": "string"
        -      },
        -      "linearizationUri": {
        -        "type": "string"
        -      },
        -      "title": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "code",
        -      "title",
        -      "chapter",
        -      "foundationUri",
        -      "linearizationUri",
        -      "classKind",
        -      "depth"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "chapter": {
        +        "type": "string"
        +      },
        +      "classKind": {
        +        "type": "string"
        +      },
        +      "code": {
        +        "type": "string"
        +      },
        +      "depth": {
        +        "maximum": 9007199254740991,
        +        "minimum": -9007199254740991,
        +        "type": "integer"
        +      },
        +      "foundationUri": {
        +        "type": "string"
        +      },
        +      "linearizationUri": {
        +        "type": "string"
        +      },
        +      "title": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "code",
        +      "title",
        +      "chapter",
        +      "foundationUri",
        +      "linearizationUri",
        +      "classKind",
        +      "depth"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedmap_loinc_to_snomed4 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / properties / loinc_details / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "code": {
        -        "type": "string"
        -      },
        -      "component": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "long_common_name": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "property": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "system": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      }
        -    },
        -    "required": [
        -      "code",
        -      "long_common_name",
        -      "component",
        -      "system",
        -      "property"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "code": {
        +        "type": "string"
        +      },
        +      "component": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "long_common_name": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "property": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "system": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      }
        +    },
        +    "required": [
        +      "code",
        +      "long_common_name",
        +      "component",
        +      "system",
        +      "property"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / mapping_sources / items / properties / url / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / mapping_sources / items / properties / url / type
        Removed value: -[
        -  "string",
        -  "null"
        -]
    • Changedmesh_descriptor1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedmesh_qualifiers1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedmesh_search3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedOutput schema / properties / total_count / maximum
        Added value: +9007199254740991
      • addedOutput schema / properties / total_count / minimum
        Added value: +-9007199254740991
    • Changedmesh_tree1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedrxnorm_classes1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedrxnorm_concept1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedrxnorm_ingredients1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedrxnorm_ndc5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedOutput schema / properties / ndc / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / ndc / type
        Removed value: -[
        -  "string",
        -  "null"
        -]
      • addedOutput schema / properties / rxcui / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / rxcui / type
        Removed value: -[
        -  "string",
        -  "null"
        -]
    • Changedrxnorm_search3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedOutput schema / properties / total_count / maximum
        Added value: +9007199254740991
      • addedOutput schema / properties / total_count / minimum
        Added value: +-9007199254740991
    • Changedterminology_diff8 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedOutput schema / properties / changelog_url / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / changelog_url / type
        Removed value: -[
        -  "string",
        -  "null"
        -]
      • changedOutput schema / properties / cross_revision_summary / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "avg_alternatives_when_split": {
        -        "type": "number"
        -      },
        -      "icd10_categories_total": {
        -        "type": "integer"
        -      },
        -      "one_to_many_splits": {
        -        "type": "integer"
        -      },
        -      "one_to_one_mappings": {
        -        "type": "integer"
        -      }
        -    },
        -    "required": [
        -      "icd10_categories_total",
        -      "one_to_one_mappings",
        -      "one_to_many_splits",
        -      "avg_alternatives_when_split"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "avg_alternatives_when_split": {
        +        "type": "number"
        +      },
        +      "icd10_categories_total": {
        +        "maximum": 9007199254740991,
        +        "minimum": -9007199254740991,
        +        "type": "integer"
        +      },
        +      "one_to_many_splits": {
        +        "maximum": 9007199254740991,
        +        "minimum": -9007199254740991,
        +        "type": "integer"
        +      },
        +      "one_to_one_mappings": {
        +        "maximum": 9007199254740991,
        +        "minimum": -9007199254740991,
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "icd10_categories_total",
        +      "one_to_one_mappings",
        +      "one_to_many_splits",
        +      "avg_alternatives_when_split"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / from_version / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / from_version / type
        Removed value: -[
        -  "string",
        -  "null"
        -]
      • addedOutput schema / properties / to_version / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / to_version / type
        Removed value: -[
        -  "string",
        -  "null"
        -]
    • Changedterminology_versions7 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedOutput schema / properties / terminologies / items / properties / changelog_url / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / terminologies / items / properties / changelog_url / type
        Removed value: -[
        -  "string",
        -  "null"
        -]
      • addedOutput schema / properties / terminologies / items / properties / notes / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / terminologies / items / properties / notes / type
        Removed value: -[
        -  "string",
        -  "null"
        -]
      • addedOutput schema / properties / total / maximum
        Added value: +9007199254740991
      • addedOutput schema / properties / total / minimum
        Added value: +-9007199254740991
    • Changedvalidate_codes18 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / codes / items / additionalProperties
        Removed value: -false
      • addedOutput schema / properties / error_count / maximum
        Added value: +9007199254740991
      • addedOutput schema / properties / error_count / minimum
        Added value: +-9007199254740991
      • addedOutput schema / properties / invalid_count / maximum
        Added value: +9007199254740991
      • addedOutput schema / properties / invalid_count / minimum
        Added value: +-9007199254740991
      • addedOutput schema / properties / results / items / properties / active / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / results / items / properties / active / type
        Removed value: -[
        -  "boolean",
        -  "null"
        -]
      • addedOutput schema / properties / results / items / properties / error / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / results / items / properties / error / type
        Removed value: -[
        -  "string",
        -  "null"
        -]
      • addedOutput schema / properties / results / items / properties / replaced_by / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / results / items / properties / replaced_by / type
        Removed value: -[
        -  "string",
        -  "null"
        -]
      • addedOutput schema / properties / results / items / properties / title / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / results / items / properties / title / type
        Removed value: -[
        -  "string",
        -  "null"
        -]
      • addedOutput schema / properties / total / maximum
        Added value: +9007199254740991
      • addedOutput schema / properties / total / minimum
        Added value: +-9007199254740991
      • addedOutput schema / properties / valid_count / maximum
        Added value: +9007199254740991
      • addedOutput schema / properties / valid_count / minimum
        Added value: +-9007199254740991
  11. 2 tool updatesv1.5.0
    • Changedmap_icd10_to_icd111 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "alternatives": {
        +      "description": "Additional ICD-11 candidates WHO documents for this ICD-10 code. Empty when the primary is the only documented mapping (or when found=false). 1,461 of the 11,243 indexed codes have non-empty alternatives.",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "chapter": {
        +            "type": "string"
        +          },
        +          "classKind": {
        +            "type": "string"
        +          },
        +          "code": {
        +            "type": "string"
        +          },
        +          "depth": {
        +            "type": "integer"
        +          },
        +          "foundationUri": {
        +            "type": "string"
        +          },
        +          "linearizationUri": {
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "code",
        +          "title",
        +          "chapter",
        +          "foundationUri",
        +          "linearizationUri",
        +          "classKind",
        +          "depth"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "found": {
        +      "description": "Whether the code is in the WHO ICD-10 → ICD-11 transition table.",
        +      "type": "boolean"
        +    },
        +    "icd10": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "chapter": {
        +              "type": "string"
        +            },
        +            "code": {
        +              "type": "string"
        +            },
        +            "depth": {
        +              "type": "integer"
        +            },
        +            "title": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "code",
        +            "title",
        +            "chapter",
        +            "depth"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Source ICD-10 entry from the WHO table. Null when found=false."
        +    },
        +    "primary": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "chapter": {
        +              "type": "string"
        +            },
        +            "classKind": {
        +              "type": "string"
        +            },
        +            "code": {
        +              "type": "string"
        +            },
        +            "depth": {
        +              "type": "integer"
        +            },
        +            "foundationUri": {
        +              "type": "string"
        +            },
        +            "linearizationUri": {
        +              "type": "string"
        +            },
        +            "title": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "code",
        +            "title",
        +            "chapter",
        +            "foundationUri",
        +            "linearizationUri",
        +            "classKind",
        +            "depth"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Primary 1:1 ICD-11 mapping. Null when found=false."
        +    },
        +    "query": {
        +      "description": "The ICD-10 code as submitted (raw, before normalization).",
        +      "type": "string"
        +    },
        +    "source": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "publisher": {
        +          "description": "Authoritative publisher (e.g. \"WHO\").",
        +          "type": "string"
        +        },
        +        "release_date": {
        +          "description": "ISO date string for the release.",
        +          "type": "string"
        +        },
        +        "version": {
        +          "description": "Transition table release identifier (e.g. \"2025-01\").",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "publisher",
        +        "version",
        +        "release_date"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "query",
        +    "found",
        +    "icd10",
        +    "primary",
        +    "alternatives",
        +    "source"
        +  ],
        +  "type": "object"
        +}
    • Changedmap_loinc_to_snomed1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "guidance": {
        +      "description": "Short human-readable explanation of why this tool returns guidance instead of a mapping.",
        +      "type": "string"
        +    },
        +    "loinc_code": {
        +      "description": "The LOINC code as submitted.",
        +      "type": "string"
        +    },
        +    "loinc_details": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "code": {
        +              "type": "string"
        +            },
        +            "component": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "long_common_name": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "property": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "system": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            }
        +          },
        +          "required": [
        +            "code",
        +            "long_common_name",
        +            "component",
        +            "system",
        +            "property"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "NLM Clinical Tables details for the LOINC code (component, system, property, etc.). Null when the code was not found upstream."
        +    },
        +    "mapping_sources": {
        +      "description": "Structured list of authoritative LOINC → SNOMED CT mapping sources (UMLS Metathesaurus, LOINC SNOMED CT Expression Association, Regenstrief RELMA).",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "description": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "description",
        +          "url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "status": {
        +      "description": "Always \"guidance-only\" — direct LOINC → SNOMED CT mappings require licensed sources (UMLS Metathesaurus or LOINC SNOMED CT Expression Association). This tool returns pointers, not the mapping itself.",
        +      "enum": [
        +        "guidance-only"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "loinc_code",
        +    "loinc_details",
        +    "status",
        +    "guidance",
        +    "mapping_sources"
        +  ],
        +  "type": "object"
        +}
  12. 5 tool updatesv1.4.0
    • Changedmesh_descriptor1 field changed
      • addedInput schema / properties / language
        Added value: +{
        +  "default": "en",
        +  "description": "Language code (default: en)",
        +  "enum": [
        +    "en",
        +    "es",
        +    "pt",
        +    "fr",
        +    "de",
        +    "it",
        +    "zh",
        +    "ja",
        +    "ar",
        +    "ru"
        +  ],
        +  "type": "string"
        +}
    • Changedmesh_search1 field changed
      • addedInput schema / properties / language
        Added value: +{
        +  "default": "en",
        +  "description": "Language code (default: en)",
        +  "enum": [
        +    "en",
        +    "es",
        +    "pt",
        +    "fr",
        +    "de",
        +    "it",
        +    "zh",
        +    "ja",
        +    "ar",
        +    "ru"
        +  ],
        +  "type": "string"
        +}
    • Addedterminology_diff
    • Addedterminology_versions
    • Addedvalidate_codes
  13. 28 tool updatesv1.2.1
    • First observedatc_classify
    • First observedatc_lookup
    • First observedatc_members
    • First observedcid10_chapter
    • First observedcid10_chapters
    • First observedcid10_lookup
    • First observedcid10_search
    • First observedfind_equivalent
    • First observedicd11_chapters
    • First observedicd11_hierarchy
    • First observedicd11_lookup
    • First observedicd11_postcoordination
    • First observedicd11_search
    • First observedloinc_answers
    • First observedloinc_details
    • First observedloinc_panels
    • First observedloinc_search
    • First observedmap_icd10_to_icd11
    • First observedmap_loinc_to_snomed
    • First observedmesh_descriptor
    • First observedmesh_qualifiers
    • First observedmesh_search
    • First observedmesh_tree
    • First observedrxnorm_classes
    • First observedrxnorm_concept
    • First observedrxnorm_ingredients
    • First observedrxnorm_ndc
    • First observedrxnorm_search

TDQS

A4/5.0

Scored across 33 tools

Disambiguation4/5

Tools are grouped by terminology prefix (icd11_, cid10_, loinc_, rxnorm_, mesh_, atc_) with distinct roles like search vs lookup vs hierarchy, so most selections are unambiguous. However, cross-terminology tools (find_equivalent, harmonize_terms, search/fetch) could occasionally be confused with terminology-specific searches, though descriptions provide explicit 'when NOT to use' guidance.

Naming Consistency4/5

Almost all tools follow a predictable prefix_operation snake_case pattern (e.g., icd11_search, loinc_details, rxnorm_concept), making the set easy to scan. Minor deviations exist—some use nouns (icd11_hierarchy, cid10_chapters) and the generic search/fetch lack a prefix—but these are within expected bounds.

Tool Count4/5

33 tools is high, but the server covers seven distinct terminologies (ICD-11, CID-10, LOINC, RxNorm, MeSH, ATC) plus mapping, validation, and metadata, so each group needs multiple tools. The count is slightly heavy but justified by the broad domain rather than redundant operations.

Completeness4/5

The surface is comprehensive: search, lookup, hierarchy, cross-terminology equivalence, batch validation, mapping, and version reporting are all present for the major terminologies. Gaps are minor—no tool to actually build/validate postcoordinated ICD-11 clusters (harmonize_terms defers to icd11_postcoordination, which only lists axes) and no reverse ICD-11→ICD-10 mapping—but core workflows are covered.

Maintenance

ActivityActive
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    A FastAPI backend service that connects to Azure's Managed Chat Project using GPT-4o to provide medical chatbot functionality through a simple HTML interface.
    -
  • A
    license
    Not graded
    quality
    F
    maintenance
    Provides comprehensive medical information by querying authoritative sources including FDA drug database, WHO health statistics, PubMed literature, RxNorm nomenclature, Google Scholar, and Australia's PBS API through 22+ specialized tools.
    45 npm
    3
    MIT