Medical Terminologies MCP
You can programmatically search, retrieve, map, validate, and harmonize medical terminology codes across ICD-11, LOINC, RxNorm, MeSH, ATC, and CID-10, with provenance and versioning metadata.
Search/lookup ICD-11 entities, definitions, hierarchies, chapters, and postcoordination axes.
Search LOINC lab/observation codes, details, answer lists, and panel structures.
Search RxNorm drugs, get concepts, ingredients, therapeutic classes, and NDC mappings.
Search MeSH descriptors, scope notes, tree locations, and allowable qualifiers; request official translations.
Classify drugs with ATC, look up ATC codes, and list class members.
Search and look up Brazilian CID-10 codes in Portuguese; browse chapters/groups.
Map ICD-10 codes to ICD-11 using bundled WHO transition tables.
Batch-validate up to 50 mixed codes across terminologies.
Find equivalent/ranked terms across terminologies and harmonize free-text terms to standard codes.
Get terminology version metadata and diff guidance for reproducible batch runs.
Use ChatGPT Deep Research-compatible
search/fetchtools.Access MCP prompts/resources for named workflows and reference content.
Every response includes provenance, source URL, citation, license, caching, and rate limiting.
Provides access to MeSH (Medical Subject Headings), the controlled vocabulary used by PubMed for indexing medical literature, enabling search and retrieval of MeSH descriptors, tree hierarchies, and qualifiers.
Medical Terminologies MCP Server
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/fetchfor ChatGPT Deep Research3 MCP Prompts that orchestrate tool calls into named workflows (
find-medical-code,drug-info,cid10-portuguese-lookup) — clients render these as one-click user actions4 MCP Resources for in-process reference content (
info://server,info://cid10/chapters,info://licenses,info://stats) — sub-millisecond reads (exceptinfo://statswhich 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_metaundercom.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 derivedBuilt-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 ofworker/)
📖 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 is PubMed's indexing vocabulary; tree numbers let you traverse the controlled hierarchy programmatically |
Public-health analyst (Brazil / SUS) |
| CID-10 V2008 is the Brazilian operational standard; ATC pairs cleanly with DataSUS prescription data |
Public-health analyst (international) |
| WHO ICD-11 is the current international revision; chapters and hierarchy support pipeline classification |
Clinical-informatics developer |
| LOINC for lab/observation interoperability; cross-terminology search to scaffold new mappings |
Educator / curriculum author |
| 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/mcphas WHO credentials configured.WHO_CLIENT_ID/WHO_CLIENT_SECRETare 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 noconcept_ancestortraversal. 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_equivalentand the*_searchtools 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_versionslists 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 (default2026-01, override withWHO_ICD11_RELEASE_ID), so a self-hosted run is repeatable until you change it.The provenance block on every response (
structuredContent.provenance) carriesretrieved_at(the real extraction instant; a cache hit keeps the original fetch time), the source URL, the citation and the license. Itsdata_vintagefield carries the version when the source exposes one:Source
data_vintagein each responseICD-11
the pinned WHO release (e.g.
2026-01)ICD-10 → ICD-11 tables
the bundled WHO release (e.g.
2025-01)CID-10
V2008LOINC, RxNorm, MeSH, ATC
null, because these APIs do not state a release per response. Recordterminology_versions+retrieved_atinstead
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/mcpConnect via the MCP Inspector or any Streamable HTTP MCP client:
npx @modelcontextprotocol/inspector --transport streamable-http \
--server-url https://medical.sidneybissoli.com/mcpOr install via Smithery, which proxies the same endpoint through their gateway:
npx -y smithery mcp add sidneybissoli/medical-terminologies-mcpThe 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
Global Installation (Recommended)
npm install -g medical-terminologies-mcpLocal Installation
npm install medical-terminologies-mcpConfiguration
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 |
| Yes¹ | WHO ICD API Client ID |
| Yes¹ | WHO ICD API Client Secret |
| No | ICD-11 release to query (e.g. |
| No | pino log level ( |
¹ 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/mcpHosted 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 /statsandGET /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/mcpsearch 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_SECRETNote: 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:
Visit https://smithery.ai → Publish → MCP (or
https://smithery.ai/new).Pick the URL submission path (Smithery deprecated container hosting in 2024 — URL is the supported flow now).
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"toicd11_search/icd11_lookupto search and read WHO's official pt-BR linearization labels.MeSH: pass
language: "pt"tomesh_search/mesh_descriptorto 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 |
| Search ICD-11 by term |
|
| Get entity details by code/URI |
|
| Navigate parent/child relationships |
|
| List all ICD-11 chapters | - |
| Get postcoordination axes |
|
LOINC Tools (4)
Tool | Description | Example |
| Search lab tests and observations |
|
| Get full LOINC code details |
|
| 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 |
|
| Panel/form structure: member items in form order |
|
RxNorm Tools (5)
Tool | Description | Example |
| Search drugs by name |
|
| Get drug concept details |
|
| Get active ingredients |
|
| Get therapeutic classes |
|
| Map between RxCUI and NDC |
|
MeSH Tools (4)
Tool | Description | Example |
| Search MeSH descriptors |
|
| Get descriptor details |
|
| Get tree hierarchy location |
|
| Get allowed qualifiers |
|
Crosswalk Tools (4)
Tool | Description | Example |
| Authoritative ICD-10 → ICD-11 mapping via bundled WHO transition tables; returns primary code + chapter + URIs and any WHO-documented alternatives |
|
| Batch-validate up to 50 codes across ICD-11, LOINC, RxNorm, MeSH, ATC, CID-10; returns per-code valid/invalid + display name |
|
| Ranked unified search across terminologies: server-computed |
|
| 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 |
|
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 |
| Drug name → ATC code(s) |
|
| ATC code (level 1-4) → name + level type |
|
| ATC class → member drugs |
|
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 |
| Portuguese text search (diacritic-insensitive, AND between words; everyday words resolved to CID-10 wording, and the response says so) |
|
| Code → official Portuguese name |
|
| List the 22 CID-10 chapters | - |
| Chapter detail with constituent groups |
|
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 |
| 0 | neoplasia maligna (da mama) | 497, 12 |
| 0 | infarto | 42 |
| 0 | acidente vascular cerebral | 11 |
| 0 | hipertensão | 44 |
| 0 | cefaleia | 10 |
| 0 | lesão autoprovocada | 167 |
| 0 | pedestre traumatizado | 97 |
| 0 | doença pelo HIV | 45 |
| 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 |
| List all 8 supported terminologies with current version, release date, publisher, source URL, and update cadence | - |
| Report what diff data is available between two versions of a terminology (real cross-revision stats for ICD-10 → ICD-11; guidance otherwise) |
|
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 |
| Searches the catalog (CID-10, ICD-11, LOINC, RxNorm, MeSH, terminology versions) and returns |
|
| Returns the full document of an id from |
|
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 — query: "glucose", max_results: 3
## 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: Calculatedtotal_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_searchwith a clinical term → pick the result →icd11_lookupwith the code for full details, oricd11_hierarchyto walk parents/children.Drug pipeline:
rxnorm_searchfor a brand or generic name →rxnorm_conceptfor the canonical record →rxnorm_ingredientsandrxnorm_classesfor downstream analysis.Harmonize a column of free-text terms:
terminology_versionsonce at the start →harmonize_termsin batches of up to 50 (each term with its domain) → acceptexact, spot-checkstrong, sendneeds_reviewto a person → keep each row'sprovenancewith the crosswalk. Write lab terms with specimen and property ("glucose serum"): a bare "glucose" matches over a thousand LOINC codes.Cross-terminology scaffolding:
find_equivalentwith a clinical term searches ICD-11, LOINC, RxNorm and MeSH in one call. Use it to bootstrap mappings; the pairwisemap_*tools refine them.ICD-10 → ICD-11 (authoritative):
map_icd10_to_icd11reads the bundled WHO transition tables. It returns the primary ICD-11 code plus any WHO-documented alternatives, andnull(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-mcpAPI 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 buildRunning locally
npm startTesting with MCP Inspector
npx @modelcontextprotocol/inspector node dist/index.jsContributing
Contributions are welcome! Please feel free to submit a Pull Request.
Fork the repository
Create your feature branch (
git checkout -b feature/AmazingFeature)Commit your changes (
git commit -m 'Add some AmazingFeature')Push to the branch (
git push origin feature/AmazingFeature)Open a Pull Request
Author
Sidney da Silva Pereira Bissoli
GitHub: @SidneyBissoli
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
WHO for the ICD-11 API
Regenstrief Institute for LOINC
U.S. National Library of Medicine for RxNorm and MeSH
Anthropic for the Model Context Protocol
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 toolsatc_classifyATC Classification for a DrugARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| drug_name | Yes | Drug name to classify (brand or generic, e.g., "metformin") |
Output Schema
| Name | Required | Description |
|---|---|---|
| matches | Yes | |
| drug_name | Yes | |
| provenance | Yes | Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license |
| attribution | Yes | Canonical source URLs of this response (attribution list) |
TDQS
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.
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.
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.
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.
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.
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 DetailsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| atc_code | Yes | ATC 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
| Name | Required | Description |
|---|---|---|
| found | Yes | |
| details | Yes | |
| atc_code | Yes | |
| provenance | Yes | Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license |
| attribution | Yes | Canonical source URLs of this response (attribution list) |
TDQS
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.
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.
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.
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.
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.
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 MembersARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| atc_code | Yes | ATC code at any level. Higher levels (1-4) return all member substances; level 5 returns the single substance. |
Output Schema
| Name | Required | Description |
|---|---|---|
| members | Yes | |
| atc_code | Yes | |
| provenance | Yes | Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license |
| attribution | Yes | Canonical source URLs of this response (attribution list) |
TDQS
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.
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.
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.
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.
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.
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-10ARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| num | Yes | Chapter number (1-22). CID-10 V2008 has 22 chapters. |
Output Schema
| Name | Required | Description |
|---|---|---|
| num | Yes | |
| found | Yes | |
| groups | Yes | |
| chapter | Yes | |
| provenance | Yes | Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license |
| attribution | Yes | Canonical source URLs of this response (attribution list) |
TDQS
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.
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.
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.
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.
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.
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-10ARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| chapters | Yes | |
| provenance | Yes | Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license |
| attribution | Yes | Canonical source URLs of this response (attribution list) |
TDQS
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.
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.
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.
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.
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.
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-10ARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | CID-10 code (e.g., "A00", "A00.1", "A001", "I21"). Dotted and undotted forms both accepted. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hit | Yes | |
| code | Yes | |
| found | Yes | |
| provenance | Yes | Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license |
| attribution | Yes | Canonical source URLs of this response (attribution list) |
TDQS
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.
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.
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.
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.
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.
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.
cid10_searchBuscar na CID-10ARead-onlyIdempotentInspect
Search the Brazilian CID-10 (Classificação EstatÃstica Internacional de Doenças, 10ª Revisão) by Portuguese text.
Use this tool to:
Find CID-10 codes for Brazilian SUS / ANVISA contexts ("infarto", "diabetes", "tuberculose")
Look up the official Portuguese (CBCD/USP) translation of a clinical term
Locate codes for billing, epidemiology, and clinical documentation in Brazil
Returns matches from CID-10 categories (3-char) and/or subcategories (4-char). Search is diacritic-insensitive: typing "infeccoes" matches "infecções". Every word must match (AND), and everyday Portuguese is resolved to the CID-10's own wording (câncer→neoplasia maligna, AVC→acidente vascular cerebral, pressão alta→hipertensão, suicÃdio→lesão autoprovocada, aids→HIV); when that happens the response says so in vocabulary_notes. This tool searches the Brazilian Portuguese CID-10 V2008 — for the international ICD-11 (current WHO revision, in English by default), use icd11_search.
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | Restrict search to 3-char categories, 4-char subcategories, or both. Default: all | all |
| query | Yes | Search terms in Portuguese, AND between words (e.g., "diabetes", "infarto", "câncer de mama"); accents ignored, everyday words resolved to CID-10 wording | |
| max_results | No | Maximum number of results (1-100). Default: 25 |
Output Schema
| Name | Required | Description |
|---|---|---|
| hits | Yes | |
| level | Yes | |
| query | Yes | |
| provenance | Yes | Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license |
| attribution | Yes | Canonical source URLs of this response (attribution list) |
| shown_count | Yes | |
| total_count | Yes | |
| vocabulary_notes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly/idempotent/non-destructive), yet the description adds substantive behavior: diacritic-insensitive matching, AND semantics across words, everyday-Portuguese-to-CID-10 vocabulary resolution (câncer→neoplasia maligna, AVC→acidente vascular cerebral), and the fact that resolution is reported back in vocabulary_notes. That is exactly the kind of non-obvious behavior an agent must know to interpret results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then scannable bullets, then matching semantics, then the sibling hand-off. Every sentence carries information, though the parenthetical glossary expansions make it longer than strictly necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter search tool with an output schema, everything needed to call it correctly is present: scope (Brazilian CID-10 V2008), matching rules, query style, and the ICD-11 escape hatch. Return-value explanation is unnecessary given the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description goes slightly beyond by illustrating how a query string is normalized (accents ignored, everyday terms rewritten) and showing the response field that reports it. It adds nothing for level or max_results, so it does not fully earn a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search) plus the exact resource (Brazilian CID-10, V2008, Portuguese text) and explicitly separates itself from icd11_search for the international ICD-11. An agent can identify it 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Three concrete 'use this tool to' bullets name the scenarios (SUS/ANVISA coding, CBCD/USP translation lookup, billing/epidemiology), and the closing sentence names the alternative (icd11_search) with the condition that selects it. The routing decision is explicit rather than implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetchDeep Research DocumentARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifier of a document returned by `search` |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Unique identifier of the document on this server; what `fetch` takes |
| url | Yes | Canonical public URL of the document — ChatGPT's citation depends on it |
| text | Yes | Full readable content of the document (Markdown) |
| title | Yes | Human-readable title of the document |
| metadata | No | Additional key/value pairs about the document (kind, source, period…) |
| provenance | Yes | Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license |
| attribution | Yes | Canonical source URLs of this response (attribution list) |
TDQS
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.
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.
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.
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.
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.
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 TerminologiesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| term | Yes | Medical term to search (e.g., "diabetes", "aspirin") | |
| limit | No | 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. | |
| source_terminology | No | If 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_terminologies | No | Limit the search to these terminologies. If omitted, all five are searched. |
Output Schema
| Name | Required | Description |
|---|---|---|
| term | Yes | |
| groups | Yes | |
| ranking | Yes | |
| results | Yes | |
| provenance | Yes | 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) |
| attribution | Yes | Canonical source URLs of this response (attribution list) |
| source_terminology | Yes | |
| searched_terminologies | Yes |
TDQS
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.
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.
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.
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.
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.
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 CodesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| terms | Yes | Terms to harmonize, each with its domain. Up to 50 per call; repeated term+domain pairs are looked up once. | |
| max_candidates | No | Candidates kept per term, best first (1-5, default 3). |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | Terms submitted. |
| counts | Yes | |
| ranking | Yes | |
| results | Yes | One entry per submitted term, in request order. |
| provenance | Yes | 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) |
| attribution | Yes | Canonical source URLs of this response (attribution list) |
| unique_lookups | Yes | Distinct term+domain pairs actually looked up. |
TDQS
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.
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.
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.
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.
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.
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 ChaptersARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | Language 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
| Name | Required | Description |
|---|---|---|
| chapters | Yes | |
| provenance | Yes | Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license |
| attribution | Yes | Canonical source URLs of this response (attribution list) |
TDQS
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.
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.
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.
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.
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.
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 HierarchyARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| uri | No | Entity URI as returned by icd11_lookup, icd11_search or a previous icd11_hierarchy call | |
| code | No | ICD-11 code (e.g., "BA00", "5A11") or block range (e.g., "5A10-5A2Y") | |
| language | No | Language code (default: en). Returns the source's OFFICIAL translation when it exists (e.g. 'pt' for official Portuguese); content is never machine-translated. | en |
| direction | Yes | Direction: "parents" for ancestors, "children" for subtypes |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | Yes | |
| entities | Yes | |
| direction | Yes | |
| provenance | Yes | Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license |
| attribution | Yes | Canonical source URLs of this response (attribution list) |
TDQS
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.
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.
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.
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.
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.
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 DetailsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| uri | No | Full ICD-11 foundation URI | |
| code | No | ICD-11 code (e.g., "BA00", "1A00") | |
| language | No | Language 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
| Name | Required | Description |
|---|---|---|
| uri | Yes | |
| code | Yes | |
| title | Yes | |
| block_id | Yes | |
| class_kind | Yes | |
| code_range | Yes | |
| definition | Yes | |
| exclusions | Yes | |
| inclusions | Yes | |
| provenance | Yes | Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license |
| attribution | Yes | Canonical source URLs of this response (attribution list) |
| browser_url | Yes | |
| coding_note | Yes | |
| index_terms | Yes | |
| long_definition | Yes | |
| diagnostic_criteria | Yes |
TDQS
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.
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.
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.
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.
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.
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 OptionsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ICD-11 code to get postcoordination info for |
Output Schema
| Name | Required | Description |
|---|---|---|
| axes | Yes | |
| code | Yes | |
| provenance | Yes | Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license |
| attribution | Yes | Canonical source URLs of this response (attribution list) |
TDQS
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.
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.
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.
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.
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.
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.
icd11_searchSearch ICD-11ARead-onlyIdempotentInspect
Search for medical conditions, diseases, and health problems in ICD-11 (International Classification of Diseases, 11th Revision).
Use this tool to:
Find ICD-11 codes for diagnoses
Search for diseases by name or keyword
Look up conditions in multiple languages
Set language for WHO's official translations — e.g. language: "pt" searches and returns the official Portuguese (pt-BR) ICD-11 labels. Never machine-translated.
Returns matching entities with codes, titles, and relevance scores.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search text (disease name, symptom, or keyword) | |
| language | No | Language code (default: en). Returns the source's OFFICIAL translation when it exists (e.g. 'pt' for official Portuguese); content is never machine-translated. | en |
| max_results | No | Maximum number of results (1-100). Default: 25 |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| entities | Yes | |
| provenance | Yes | Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license |
| attribution | Yes | Canonical source URLs of this response (attribution list) |
| total_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, openWorld). The description adds genuinely useful behavioral detail beyond them: language returns WHO official translations, never machine-translated, and results include relevance scores. Missing pagination/ranking behavior, but the translation guarantee is real added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then bulleted use cases and a return summary. Well structured and mostly waste-free, though the use-case bullets overlap noticeably with the opening sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering the safety profile, the description supplies the remaining critical context — the official-translation guarantee for language and the shape of returned fields. Minor gaps in ranking/ordering behavior keep it short of a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters including the language enum and official-translation note. The description largely echoes the schema's language semantics rather than adding new meaning, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search) and resource (medical conditions/diseases in ICD-11) with clear scope. It implicitly distinguishes from code-lookup siblings (icd11_lookup, icd11_chapters) by framing itself as name/keyword search, but never names a sibling to make the boundary explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Use this tool to:' bullets give clear context (find codes, search by name/keyword, multi-language lookup), but they restate the purpose rather than saying when to choose this over icd11_lookup or cid10_search. No when-not guidance or alternatives are offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
loinc_answersLOINC Answer ListsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| loinc_num | Yes | LOINC number (e.g., "2339-0") |
Output Schema
| Name | Required | Description |
|---|---|---|
| answers | Yes | |
| loinc_num | Yes | |
| provenance | Yes | Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license |
| attribution | Yes | Canonical source URLs of this response (attribution list) |
TDQS
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.
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.
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.
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.
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.
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 DetailsARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| loinc_num | Yes | LOINC number (e.g., "2339-0") |
Output Schema
| Name | Required | Description |
|---|---|---|
| class | Yes | |
| status | Yes | |
| system | Yes | |
| property | Yes | |
| component | Yes | |
| loinc_num | Yes | |
| provenance | Yes | Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license |
| scale_type | Yes | |
| short_name | Yes | |
| attribution | Yes | Canonical source URLs of this response (attribution list) |
| method_type | Yes | |
| time_aspect | Yes | |
| long_common_name | Yes | |
| external_copyright_notice | Yes |
TDQS
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.
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.
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.
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.
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.
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 StructureARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| loinc_num | Yes | LOINC number (e.g., "2339-0") |
Output Schema
| Name | Required | Description |
|---|---|---|
| panel | Yes | |
| loinc_num | Yes | |
| provenance | Yes | Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license |
| attribution | Yes | Canonical source URLs of this response (attribution list) |
TDQS
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.
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.
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.
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.
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.
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.
loinc_searchSearch LOINCARead-onlyIdempotentInspect
Search for laboratory tests, clinical observations, and measurements in LOINC (Logical Observation Identifiers Names and Codes).
Use this tool to:
Find LOINC codes for lab tests (e.g., "glucose", "hemoglobin")
Search for clinical measurements and vital signs
Look up diagnostic observations
Returns matching LOINC codes with names, components, and properties.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search term (test name, keyword, or partial LOINC code) | |
| max_results | No | Maximum number of results (1-100). Default: 25 |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| query | Yes | |
| provenance | Yes | Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license |
| attribution | Yes | Canonical source URLs of this response (attribution list) |
| shown_count | Yes | |
| total_count | Yes |
TDQS
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 by structured data. The description adds only the return shape ('codes with names, components, and properties'), which is already carried by the output schema, and discloses nothing about pagination, ranking, or match semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose in the first sentence, and the bullets scan quickly. Slightly redundant since the bullet list and the first sentence overlap in meaning, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering the safety/read profile, the description is nearly complete for a search tool. The only real omission is sibling differentiation against the other LOINC tools, which an agent would need in this crowded namespace.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both query and max_results are fully documented in the schema itself (including the 1-100 range and default 25). The description adds no syntax, format, or search-behavior detail beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (LOINC lab tests/observations/measurements) with concrete examples like glucose and hemoglobin. However, it never distinguishes itself from the LOINC siblings loinc_details, loinc_answers, and loinc_panels, so an agent cannot tell from the description alone which LOINC entry point to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The bulleted 'Use this tool to' list gives implied use cases (find codes, search measurements, look up observations) but they largely restate the purpose. There is no explicit when-not guidance and no routing to the sibling tools that also operate on LOINC (loinc_answers, loinc_details, loinc_panels), which is the key decision an agent faces.
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-11ARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| icd10_code | Yes | ICD-10 code to query in the ICD-11 search index (e.g., E11, I21.0, J18.9) |
Output Schema
| Name | Required | Description |
|---|---|---|
| found | Yes | Whether the code is in the WHO ICD-10 → ICD-11 transition table. |
| icd10 | Yes | Source ICD-10 entry from the WHO table. Null when found=false. |
| query | Yes | The ICD-10 code as submitted (raw, before normalization). |
| source | Yes | |
| primary | Yes | Primary 1:1 ICD-11 mapping. Null when found=false. |
| provenance | Yes | Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license |
| attribution | Yes | Canonical source URLs of this response (attribution list) |
| alternatives | Yes | 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. |
TDQS
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.
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.
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.
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.
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.
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 DetailsARead-onlyIdempotentInspect
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").
| Name | Required | Description | Default |
|---|---|---|---|
| mesh_id | Yes | MeSH Descriptor ID (e.g., D015242, D003920) | |
| language | No | Language 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
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| uri | Yes | |
| label | Yes | |
| concepts | Yes | |
| provenance | Yes | Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license |
| qualifiers | Yes | |
| scope_note | Yes | |
| attribution | Yes | Canonical source URLs of this response (attribution list) |
| tree_numbers | Yes |
TDQS
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.
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.
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.
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.
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.
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 QualifiersARead-onlyIdempotentInspect
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").
| Name | Required | Description | Default |
|---|---|---|---|
| mesh_id | Yes | MeSH Descriptor ID (e.g., D015242, D003920) |
Output Schema
| Name | Required | Description |
|---|---|---|
| mesh_id | Yes | |
| provenance | Yes | Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license |
| qualifiers | Yes | |
| attribution | Yes | Canonical source URLs of this response (attribution list) |
TDQS
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.
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.
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.
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.
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.
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_searchSearch MeSHARead-onlyIdempotentInspect
Search for MeSH (Medical Subject Headings) descriptors.
Use this tool to:
Find MeSH terms for indexing medical literature
Look up subject headings for PubMed searches
Find controlled vocabulary terms
Set language to request NLM's official translations where they exist (e.g. language: "pt" for Portuguese labels); content is never machine-translated.
Returns matching descriptors with MeSH IDs and labels.
| Name | Required | Description | Default |
|---|---|---|---|
| match | No | Match type: exact, contains, or startswith. Default: contains | contains |
| query | Yes | Search term (e.g., "diabetes", "heart failure") | |
| language | No | Language code (default: en). Returns the source's OFFICIAL translation when it exists (e.g. 'pt' for official Portuguese); content is never machine-translated. | en |
| max_results | No | Maximum number of results (1-100). Default: 25 |
Output Schema
| Name | Required | Description |
|---|---|---|
| match | Yes | |
| query | Yes | |
| provenance | Yes | Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license |
| attribution | Yes | Canonical source URLs of this response (attribution list) |
| descriptors | Yes | |
| total_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, open-world, non-destructive behavior. The description adds real value beyond them: the language parameter returns NLM's official translations where they exist and content is never machine-translated, which is a meaningful data-quality disclosure for an agent judging result trustworthiness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, followed by a scannable bullet list and a return-value line. Slight redundancy in repeating the language translation caveat that the schema already states.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 little explanation, and the description still names the shape (descriptors with MeSH IDs and labels). Safety profile is carried by annotations. Complete for a search tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. The description restates the language behavior already documented in the schema and adds nothing about match modes or max_results semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search for MeSH descriptors') and expands the acronym, so the agent knows exactly which vocabulary is being queried versus the ICD-10/LOINC/RxNorm search siblings. It does not explicitly distinguish itself from mesh_descriptor or mesh_tree, but the resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Three concrete use cases (indexing medical literature, PubMed subject headings, controlled vocabulary lookup) give clear context for when this tool applies. It stops short of naming alternatives or exclusions, e.g. that mesh_descriptor should be used once an ID is known.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mesh_treeMeSH Tree LocationsARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| mesh_id | Yes | MeSH Descriptor ID (e.g., D015242, D003920) |
Output Schema
| Name | Required | Description |
|---|---|---|
| mesh_id | Yes | |
| provenance | Yes | Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license |
| attribution | Yes | Canonical source URLs of this response (attribution list) |
| tree_numbers | Yes |
TDQS
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.
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.
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.
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.
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.
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 ClassesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| rxcui | Yes | RxCUI of the drug |
Output Schema
| Name | Required | Description |
|---|---|---|
| rxcui | Yes | |
| classes | Yes | |
| provenance | Yes | Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license |
| attribution | Yes | Canonical source URLs of this response (attribution list) |
TDQS
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.
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.
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.
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.
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.
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 DetailsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| rxcui | Yes | RxNorm Concept Unique Identifier (string of digits or integer, e.g. "161" or 161) | |
| include_related | No | Include related concepts (ingredients, brands, dose forms). Default false; true/false, also accepted as the strings "true"/"false" |
Output Schema
| Name | Required | Description |
|---|---|---|
| tty | Yes | |
| name | Yes | |
| found | Yes | false when RxNorm has no concept with this RxCUI (the lookup answered; the fields below are null) |
| rxcui | Yes | |
| status | Yes | |
| synonym | Yes | |
| umlscui | Yes | |
| language | Yes | |
| suppress | Yes | |
| provenance | Yes | Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license |
| attribution | Yes | Canonical source URLs of this response (attribution list) |
| remapped_to | Yes | |
| related_groups | Yes |
TDQS
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.
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.
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.
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.
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.
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 IngredientsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| rxcui | Yes | RxCUI of the drug |
Output Schema
| Name | Required | Description |
|---|---|---|
| rxcui | Yes | |
| provenance | Yes | Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license |
| attribution | Yes | Canonical source URLs of this response (attribution list) |
| ingredients | Yes |
TDQS
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.
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.
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.
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.
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.
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 MappingARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ndc | No | NDC code to look up RxCUI (alternative to rxcui) | |
| rxcui | No | RxCUI to get NDC codes for |
Output Schema
| Name | Required | Description |
|---|---|---|
| ndc | Yes | |
| ndcs | Yes | |
| rxcui | Yes | |
| provenance | Yes | Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license |
| query_mode | Yes | |
| attribution | Yes | Canonical source URLs of this response (attribution list) |
TDQS
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.
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.
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.
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.
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.
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.
rxnorm_searchSearch RxNorm DrugsARead-onlyIdempotentInspect
Search for drugs in RxNorm (Normalized names for clinical drugs).
Use this tool to:
Find drug concepts by brand or generic name
Look up medications for prescribing
Search for drug formulations
Returns matching drugs with RxCUI identifiers, names, and term types.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Drug name to search (brand or generic) | |
| max_results | No | Maximum number of results (1-100). Default: 25 |
Output Schema
| Name | Required | Description |
|---|---|---|
| drugs | Yes | |
| query | Yes | |
| provenance | Yes | Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license |
| attribution | Yes | Canonical source URLs of this response (attribution list) |
| total_count | Yes |
TDQS
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 covered without the description's help. The description adds that results carry RxCUI identifiers, names, and term types, but that return-value detail is already available through the output schema, so the added value is modest.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded one-line purpose followed by a short bulleted use-case list and a return-value sentence; nothing is wasted. The bullet framing is slightly padded but still efficient and skimmable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With rich annotations, a complete input schema, and an output schema that carries the return structure, the description supplies everything needed to call the tool correctly. Only the sibling-routing question is left open, which is a minor gap for a search entry point.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% – both 'query' (brand or generic) and 'max_results' (1-100, default 25) are fully documented in the schema. The description adds no syntax, matching behavior, or format hints beyond that, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Search for drugs in RxNorm') and even expands the acronym as 'Normalized names for clinical drugs'. It does not, however, distinguish itself from siblings like rxnorm_concept, rxnorm_classes, or rxnorm_ingredients, so the agent must infer which RxNorm entry point fits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Three explicit use cases are given (find by brand/generic name, look up medications for prescribing, search formulations), which cleanly tells the agent when this tool applies. There are no exclusions or named alternatives, so the agent gets context but no routing guidance against sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchDeep Research SearchARead-onlyIdempotentInspect
Searches the medical terminologies (CID-10 categories and chapters, ICD-11, LOINC, RxNorm, MeSH, terminology version records) catalog and returns up to 10 matching documents as { id, title, url }, ordered by relevance (an empty list means nothing matched).
This tool exists for the OpenAI Deep Research contract: ChatGPT deep research, company knowledge and research workflows over the Responses API require exactly the tools search and fetch. Pass one of the returned ids to fetch to read the document.
For direct questions and for data (values, series, rankings) prefer the terminology tools (icd11_*, cid10_*, loinc_*, rxnorm_*, mesh_*, atc_*, map_*, find_equivalent, validate_codes), which return the actual data with provenance — this is a catalog index, not a data query.
Query: natural language or keywords, Portuguese or English; accents and case are ignored.
Behavior: read-only and idempotent — the catalog comes from the public source and is cached in memory.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search terms, natural language or keywords (accents and case are ignored) |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | Matching documents, in relevance order |
| provenance | Yes | 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) |
| attribution | Yes | Canonical source URLs of this response (attribution list) |
TDQS
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 still adds real context beyond them: result count cap (10), relevance ordering, empty-list semantics, and that the catalog is fetched from a public source and cached in memory. It stops short of describing pagination or latency, but that is minor here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and return shape, then usage routing, then query semantics and behavior. Some redundancy (the accent/case note repeats the schema, and the catalog framing appears twice), but every block is short and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 spelled out, yet the description still names the {id, title, url} shape and the empty-result case. Combined with the explicit sibling routing for a large tool set, an agent has everything needed to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema description coverage is 100%, so the schema already documents `query` fully. The description's note on natural language vs keywords, Portuguese/English, and accent/case insensitivity largely restates the schema. Baseline 3 applies since the schema carries the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (searches) and resource (the medical terminologies catalog), names the domains covered (CID-10, ICD-11, LOINC, RxNorm, MeSH, version records), and explicitly distinguishes itself from the sibling terminology tools by calling itself 'a catalog index, not a data query'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use (the OpenAI Deep Research contract requiring exactly `search` and `fetch`), the follow-up action (pass an id to `fetch`), and a clear when-not-to-use with named alternatives (prefer `icd11_*`, `cid10_*`, `loinc_*`, etc. for actual data). 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.
terminology_diffTerminology Version DiffARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| to_version | No | Version you want to compare to. Optional. | |
| terminology | Yes | Which terminology to report on. | |
| from_version | No | Version you have data from. Optional; behavior depends on terminology. |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | Yes | |
| provenance | Yes | Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license |
| to_version | Yes | |
| attribution | Yes | Canonical source URLs of this response (attribution list) |
| terminology | Yes | |
| from_version | Yes | |
| changelog_url | Yes | |
| diff_available | Yes | True when this server has the data to compute a real diff for the requested terminology. False = guidance-only response. |
| bundled_versions | Yes | |
| cross_revision_summary | Yes | Populated 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
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.
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.
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.
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.
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.
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 VersionsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| terminology | No | Filter to a single terminology. Omit to return all 7. |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | |
| generated | Yes | Date this snapshot was generated. |
| provenance | Yes | Provenance block (contract v1.1): source, URL, data vintage, extraction instant, origin diagnostics, citation, license |
| attribution | Yes | Canonical source URLs of this response (attribution list) |
| terminologies | Yes |
TDQS
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.
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.
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.
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.
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.
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 CodesARead-onlyIdempotentInspect
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: nullmeans "code not found";valid: false+error: setmeans "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).
| Name | Required | Description | Default |
|---|---|---|---|
| codes | Yes | List 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
| Name | Required | Description |
|---|---|---|
| total | Yes | Number of codes submitted. |
| results | Yes | |
| provenance | Yes | 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) |
| attribution | Yes | Canonical source URLs of this response (attribution list) |
| error_count | Yes | How many couldn't be validated due to upstream/network errors. |
| valid_count | Yes | How many were confirmed valid. |
| invalid_count | Yes | How many were not found. |
TDQS
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.
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.
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.
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.
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.
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.
33 tool updates
v2.1.1- Changed
atc_classify1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded 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" +}
- Changed
atc_lookup1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded 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" +}
- Changed
atc_members1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded 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" +}
- Changed
cid10_chapter1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded 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" +}
- Changed
cid10_chapters1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded 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" +}
- Changed
cid10_lookup1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded 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" +}
- Changed
cid10_search1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded 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" +}
- Changed
fetch1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded 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" +}
- Changed
find_equivalent2 fields changed- changed
Output schema / properties / provenance / items / descriptionPrevious 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" - added
Output schema / properties / provenance / items / properties / field_sourcesAdded 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" +}
- Changed
harmonize_terms2 fields changed- changed
Output schema / properties / provenance / items / descriptionPrevious 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" - added
Output schema / properties / provenance / items / properties / field_sourcesAdded 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" +}
- Changed
icd11_chapters1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded 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" +}
- Changed
icd11_hierarchy1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded 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" +}
- Changed
icd11_lookup1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded 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" +}
- Changed
icd11_postcoordination1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded 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" +}
- Changed
icd11_search1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded 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" +}
- Changed
loinc_answers1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded 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" +}
- Changed
loinc_details1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded 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" +}
- Changed
loinc_panels1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded 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" +}
- Changed
loinc_search1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded 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" +}
- Changed
map_icd10_to_icd111 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded 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" +}
- Changed
mesh_descriptor1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded 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" +}
- Changed
mesh_qualifiers1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded 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" +}
- Changed
mesh_search1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded 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" +}
- Changed
mesh_tree1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded 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" +}
- Changed
rxnorm_classes1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded 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" +}
- Changed
rxnorm_concept1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded 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" +}
- Changed
rxnorm_ingredients1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded 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" +}
- Changed
rxnorm_ndc1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded 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" +}
- Changed
rxnorm_search1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded 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" +}
- Changed
search2 fields changed- changed
Output schema / properties / provenance / items / descriptionPrevious 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" - added
Output schema / properties / provenance / items / properties / field_sourcesAdded 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" +}
- Changed
terminology_diff1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded 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" +}
- Changed
terminology_versions1 field changed- added
Output schema / properties / provenance / properties / field_sourcesAdded 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" +}
- Changed
validate_codes2 fields changed- changed
Output schema / properties / provenance / items / descriptionPrevious 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" - added
Output schema / properties / provenance / items / properties / field_sourcesAdded 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" +}
8 tool updates
v2.0.0- Changed
find_equivalent7 fields changed- changed
Input schema / properties / source_terminology / enumPrevious value: -[ - "icd11", - "snomed", - "loinc", - "rxnorm", - "mesh" -]New value: +[ + "icd11", + "loinc", + "rxnorm", + "mesh" +] - changed
Input schema / properties / target_terminologies / items / enumPrevious value: -[ - "icd11", - "snomed", - "loinc", - "rxnorm", - "mesh" -]New value: +[ + "icd11", + "loinc", + "rxnorm", + "mesh" +] - changed
Output schema / properties / groups / items / properties / members / items / properties / terminology / enumPrevious value: -[ - "icd11", - "snomed", - "loinc", - "rxnorm", - "mesh" -]New value: +[ + "icd11", + "loinc", + "rxnorm", + "mesh" +] - changed
Output schema / properties / groups / items / properties / terminologies / items / enumPrevious value: -[ - "icd11", - "snomed", - "loinc", - "rxnorm", - "mesh" -]New value: +[ + "icd11", + "loinc", + "rxnorm", + "mesh" +] - removed
Output schema / properties / results / properties / snomedRemoved 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" -} - changed
Output schema / properties / searched_terminologies / items / enumPrevious value: -[ - "icd11", - "snomed", - "loinc", - "rxnorm", - "mesh" -]New value: +[ + "icd11", + "loinc", + "rxnorm", + "mesh" +] - changed
Output schema / properties / source_terminology / anyOfPrevious value: -[ - { - "enum": [ - "icd11", - "snomed", - "loinc", - "rxnorm", - "mesh" - ], - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "enum": [ + "icd11", + "loinc", + "rxnorm", + "mesh" + ], + "type": "string" + }, + { + "type": "null" + } +]
- Added
harmonize_terms - Changed
loinc_answers4 fields changed- added
Output schema / properties / answers / items / properties / answer_code / descriptionAdded value: +"LOINC answer code (LA…), e.g. \"LA18976-3\"." - added
Output schema / properties / answers / items / properties / scoreAdded value: +{ + "description": "Numeric score for scored instruments (PHQ-9 items: 0-3); null when the answer list carries none.", + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / answers / items / properties / sequence / descriptionAdded value: +"Display order in the answer list (1-based)." - changed
Output schema / properties / answers / items / requiredPrevious value: -[ - "sequence", - "answer_code", - "answer_string" -]New value: +[ + "sequence", + "answer_code", + "answer_string", + "score" +]
- Changed
loinc_panels1 field changed- changed
Output schema / properties / panel / anyOfPrevious 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" + } +]
- Removed
map_loinc_to_snomed - Changed
terminology_diff2 fields changed- changed
Input schema / properties / terminology / enumPrevious value: -[ - "icd11", - "icd10", - "snomed", - "loinc", - "rxnorm", - "mesh", - "atc", - "cid10" -]New value: +[ + "icd11", + "icd10", + "loinc", + "rxnorm", + "mesh", + "atc", + "cid10" +] - changed
Output schema / properties / terminology / enumPrevious value: -[ - "icd11", - "icd10", - "snomed", - "loinc", - "rxnorm", - "mesh", - "atc", - "cid10" -]New value: +[ + "icd11", + "icd10", + "loinc", + "rxnorm", + "mesh", + "atc", + "cid10" +]
- Changed
terminology_versions3 fields changed- changed
Input schema / properties / terminology / descriptionPrevious value: -"Filter to a single terminology. Omit to return all 8."New value: +"Filter to a single terminology. Omit to return all 7." - changed
Input schema / properties / terminology / enumPrevious value: -[ - "icd11", - "icd10", - "snomed", - "loinc", - "rxnorm", - "mesh", - "atc", - "cid10" -]New value: +[ + "icd11", + "icd10", + "loinc", + "rxnorm", + "mesh", + "atc", + "cid10" +] - changed
Output schema / properties / terminologies / items / properties / code / enumPrevious value: -[ - "icd11", - "icd10", - "snomed", - "loinc", - "rxnorm", - "mesh", - "atc", - "cid10" -]New value: +[ + "icd11", + "icd10", + "loinc", + "rxnorm", + "mesh", + "atc", + "cid10" +]
- Changed
validate_codes2 fields changed- changed
Input schema / properties / codes / items / properties / terminology / enumPrevious value: -[ - "icd11", - "icd10", - "snomed", - "loinc", - "rxnorm", - "mesh", - "atc", - "cid10" -]New value: +[ + "icd11", + "icd10", + "loinc", + "rxnorm", + "mesh", + "atc", + "cid10" +] - changed
Output schema / properties / results / items / properties / terminology / enumPrevious value: -[ - "icd11", - "icd10", - "snomed", - "loinc", - "rxnorm", - "mesh", - "atc", - "cid10" -]New value: +[ + "icd11", + "icd10", + "loinc", + "rxnorm", + "mesh", + "atc", + "cid10" +]
2 tool updates
v1.17.1- Changed
fetch1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
search1 field changed- added
Input schema / additionalPropertiesAdded value: +false
4 tool updates
v1.16.0- Changed
rxnorm_classes3 fields changed- added
Input schema / properties / rxcui / anyOfAdded value: +[ + { + "pattern": "^\\d+$", + "type": "string" + }, + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + } +] - removed
Input schema / properties / rxcui / patternRemoved value: -"^\\d+$" - removed
Input schema / properties / rxcui / typeRemoved value: -"string"
- Changed
rxnorm_concept17 fields changed- added
Input schema / properties / include_related / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "enum": [ + "true", + "false" + ], + "type": "string" + } +] - removed
Input schema / properties / include_related / defaultRemoved value: -false - changed
Input schema / properties / include_related / descriptionPrevious 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\"" - removed
Input schema / properties / include_related / typeRemoved value: -"boolean" - added
Input schema / properties / rxcui / anyOfAdded value: +[ + { + "pattern": "^\\d+$", + "type": "string" + }, + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + } +] - changed
Input schema / properties / rxcui / descriptionPrevious value: -"RxNorm Concept Unique Identifier"New value: +"RxNorm Concept Unique Identifier (string of digits or integer, e.g. \"161\" or 161)" - removed
Input schema / properties / rxcui / patternRemoved value: -"^\\d+$" - removed
Input schema / properties / rxcui / typeRemoved value: -"string" - added
Output schema / properties / foundAdded value: +{ + "description": "false when RxNorm has no concept with this RxCUI (the lookup answered; the fields below are null)", + "type": "boolean" +} - changed
Output schema / properties / language / typePrevious value: -"string"New value: +[ + "string", + "null" +] - changed
Output schema / properties / name / typePrevious value: -"string"New value: +[ + "string", + "null" +] - changed
Output schema / properties / status / typePrevious value: -"string"New value: +[ + "string", + "null" +] - changed
Output schema / properties / suppress / typePrevious value: -"string"New value: +[ + "string", + "null" +] - changed
Output schema / properties / synonym / typePrevious value: -"string"New value: +[ + "string", + "null" +] - changed
Output schema / properties / tty / typePrevious value: -"string"New value: +[ + "string", + "null" +] - changed
Output schema / properties / umlscui / typePrevious value: -"string"New value: +[ + "string", + "null" +] - changed
Output schema / requiredPrevious 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" +]
- Changed
rxnorm_ingredients3 fields changed- added
Input schema / properties / rxcui / anyOfAdded value: +[ + { + "pattern": "^\\d+$", + "type": "string" + }, + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + } +] - removed
Input schema / properties / rxcui / patternRemoved value: -"^\\d+$" - removed
Input schema / properties / rxcui / typeRemoved value: -"string"
- Changed
rxnorm_ndc3 fields changed- added
Input schema / properties / rxcui / anyOfAdded value: +[ + { + "pattern": "^\\d+$", + "type": "string" + }, + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + } +] - removed
Input schema / properties / rxcui / patternRemoved value: -"^\\d+$" - removed
Input schema / properties / rxcui / typeRemoved value: -"string"
33 tool updates
v1.15.0- Changed
atc_classify3 fields changed- changed
Output schema / properties / provenance / descriptionPrevious 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" - added
Output schema / properties / provenance / properties / retrievalAdded 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)" +} - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
atc_lookup3 fields changed- changed
Output schema / properties / provenance / descriptionPrevious 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" - added
Output schema / properties / provenance / properties / retrievalAdded 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)" +} - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
atc_members3 fields changed- changed
Output schema / properties / provenance / descriptionPrevious 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" - added
Output schema / properties / provenance / properties / retrievalAdded 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)" +} - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
cid10_chapter3 fields changed- changed
Output schema / properties / provenance / descriptionPrevious 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" - added
Output schema / properties / provenance / properties / retrievalAdded 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)" +} - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
cid10_chapters3 fields changed- changed
Output schema / properties / provenance / descriptionPrevious 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" - added
Output schema / properties / provenance / properties / retrievalAdded 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)" +} - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
cid10_lookup3 fields changed- changed
Output schema / properties / provenance / descriptionPrevious 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" - added
Output schema / properties / provenance / properties / retrievalAdded 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)" +} - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
cid10_search3 fields changed- changed
Output schema / properties / provenance / descriptionPrevious 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" - added
Output schema / properties / provenance / properties / retrievalAdded 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)" +} - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
fetch3 fields changed- changed
Output schema / properties / provenance / descriptionPrevious 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" - added
Output schema / properties / provenance / properties / retrievalAdded 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)" +} - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
find_equivalent4 fields changed- changed
Output schema / properties / provenance / descriptionPrevious 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)" - added
Output schema / properties / provenance / items / descriptionAdded value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença" - added
Output schema / properties / provenance / items / properties / retrievalAdded 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)" +} - changed
Output schema / properties / provenance / items / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
icd11_chapters3 fields changed- changed
Output schema / properties / provenance / descriptionPrevious 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" - added
Output schema / properties / provenance / properties / retrievalAdded 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)" +} - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
icd11_hierarchy3 fields changed- changed
Output schema / properties / provenance / descriptionPrevious 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" - added
Output schema / properties / provenance / properties / retrievalAdded 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)" +} - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
icd11_lookup3 fields changed- changed
Output schema / properties / provenance / descriptionPrevious 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" - added
Output schema / properties / provenance / properties / retrievalAdded 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)" +} - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
icd11_postcoordination3 fields changed- changed
Output schema / properties / provenance / descriptionPrevious 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" - added
Output schema / properties / provenance / properties / retrievalAdded 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)" +} - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
icd11_search3 fields changed- changed
Output schema / properties / provenance / descriptionPrevious 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" - added
Output schema / properties / provenance / properties / retrievalAdded 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)" +} - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
loinc_answers3 fields changed- changed
Output schema / properties / provenance / descriptionPrevious 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" - added
Output schema / properties / provenance / properties / retrievalAdded 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)" +} - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
loinc_details3 fields changed- changed
Output schema / properties / provenance / descriptionPrevious 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" - added
Output schema / properties / provenance / properties / retrievalAdded 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)" +} - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
loinc_panels3 fields changed- changed
Output schema / properties / provenance / descriptionPrevious 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" - added
Output schema / properties / provenance / properties / retrievalAdded 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)" +} - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
loinc_search3 fields changed- changed
Output schema / properties / provenance / descriptionPrevious 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" - added
Output schema / properties / provenance / properties / retrievalAdded 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)" +} - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
map_icd10_to_icd113 fields changed- changed
Output schema / properties / provenance / descriptionPrevious 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" - added
Output schema / properties / provenance / properties / retrievalAdded 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)" +} - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
map_loinc_to_snomed3 fields changed- changed
Output schema / properties / provenance / descriptionPrevious 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" - added
Output schema / properties / provenance / properties / retrievalAdded 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)" +} - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
mesh_descriptor3 fields changed- changed
Output schema / properties / provenance / descriptionPrevious 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" - added
Output schema / properties / provenance / properties / retrievalAdded 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)" +} - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
mesh_qualifiers3 fields changed- changed
Output schema / properties / provenance / descriptionPrevious 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" - added
Output schema / properties / provenance / properties / retrievalAdded 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)" +} - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
mesh_search3 fields changed- changed
Output schema / properties / provenance / descriptionPrevious 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" - added
Output schema / properties / provenance / properties / retrievalAdded 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)" +} - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
mesh_tree3 fields changed- changed
Output schema / properties / provenance / descriptionPrevious 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" - added
Output schema / properties / provenance / properties / retrievalAdded 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)" +} - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
rxnorm_classes3 fields changed- changed
Output schema / properties / provenance / descriptionPrevious 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" - added
Output schema / properties / provenance / properties / retrievalAdded 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)" +} - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
rxnorm_concept3 fields changed- changed
Output schema / properties / provenance / descriptionPrevious 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" - added
Output schema / properties / provenance / properties / retrievalAdded 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)" +} - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
rxnorm_ingredients3 fields changed- changed
Output schema / properties / provenance / descriptionPrevious 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" - added
Output schema / properties / provenance / properties / retrievalAdded 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)" +} - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
rxnorm_ndc3 fields changed- changed
Output schema / properties / provenance / descriptionPrevious 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" - added
Output schema / properties / provenance / properties / retrievalAdded 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)" +} - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
rxnorm_search3 fields changed- changed
Output schema / properties / provenance / descriptionPrevious 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" - added
Output schema / properties / provenance / properties / retrievalAdded 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)" +} - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
search4 fields changed- changed
Output schema / properties / provenance / descriptionPrevious 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)" - added
Output schema / properties / provenance / items / descriptionAdded value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença" - added
Output schema / properties / provenance / items / properties / retrievalAdded 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)" +} - changed
Output schema / properties / provenance / items / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
terminology_diff3 fields changed- changed
Output schema / properties / provenance / descriptionPrevious 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" - added
Output schema / properties / provenance / properties / retrievalAdded 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)" +} - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
terminology_versions3 fields changed- changed
Output schema / properties / provenance / descriptionPrevious 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" - added
Output schema / properties / provenance / properties / retrievalAdded 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)" +} - changed
Output schema / properties / provenance / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
- Changed
validate_codes4 fields changed- changed
Output schema / properties / provenance / descriptionPrevious 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)" - added
Output schema / properties / provenance / items / descriptionAdded value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença" - added
Output schema / properties / provenance / items / properties / retrievalAdded 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)" +} - changed
Output schema / properties / provenance / items / requiredPrevious value: -[ - "source", - "source_url", - "data_vintage", - "retrieved_at", - "citation", - "license" -]New value: +[ + "source", + "source_url", + "data_vintage", + "retrieved_at", + "retrieval", + "citation", + "license" +]
1 tool update
v1.12.1- Changed
cid10_search2 fields changed- changed
Input schema / properties / query / descriptionPrevious 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" - added
Output schema / properties / vocabulary_notesAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +}
33 tool updates
v1.11.0- Changed
atc_classify1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
atc_lookup1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
atc_members1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
cid10_chapter1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
cid10_chapters1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
cid10_lookup1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
cid10_search1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Added
fetch - Changed
find_equivalent1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
icd11_chapters1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
icd11_hierarchy5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / code / descriptionPrevious value: -"ICD-11 code to get hierarchy for"New value: +"ICD-11 code (e.g., \"BA00\", \"5A11\") or block range (e.g., \"5A10-5A2Y\")" - added
Input schema / properties / languageAdded 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" +} - added
Input schema / properties / uriAdded value: +{ + "description": "Entity URI as returned by icd11_lookup, icd11_search or a previous icd11_hierarchy call", + "format": "uri", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "code", - "direction" -]New value: +[ + "direction" +]
- Changed
icd11_lookup1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
icd11_postcoordination1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
icd11_search1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
loinc_answers1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
loinc_details1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
loinc_panels1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
loinc_search1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
map_icd10_to_icd111 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
map_loinc_to_snomed1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
mesh_descriptor1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
mesh_qualifiers1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
mesh_search1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
mesh_tree1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
rxnorm_classes1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
rxnorm_concept1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
rxnorm_ingredients1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
rxnorm_ndc1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
rxnorm_search1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Added
search - Changed
terminology_diff1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
terminology_versions1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
validate_codes1 field changed- added
Input schema / additionalPropertiesAdded value: +false
31 tool updates
v1.9.1- Changed
atc_classify4 fields changed- removed
Output schema / properties / provenance / properties / data_vintage / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / data_vintage / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / license / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / license / typeAdded value: +[ + "string", + "null" +]
- Changed
atc_lookup4 fields changed- removed
Output schema / properties / provenance / properties / data_vintage / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / data_vintage / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / license / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / license / typeAdded value: +[ + "string", + "null" +]
- Changed
atc_members4 fields changed- removed
Output schema / properties / provenance / properties / data_vintage / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / data_vintage / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / license / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / license / typeAdded value: +[ + "string", + "null" +]
- Changed
cid10_chapter4 fields changed- removed
Output schema / properties / provenance / properties / data_vintage / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / data_vintage / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / license / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / license / typeAdded value: +[ + "string", + "null" +]
- Changed
cid10_chapters4 fields changed- removed
Output schema / properties / provenance / properties / data_vintage / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / data_vintage / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / license / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / license / typeAdded value: +[ + "string", + "null" +]
- Changed
cid10_lookup5 fields changed- changed
Output schema / properties / hit / anyOfPrevious 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" + } +] - removed
Output schema / properties / provenance / properties / data_vintage / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / data_vintage / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / license / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / license / typeAdded value: +[ + "string", + "null" +]
- Changed
cid10_search6 fields changed- removed
Output schema / properties / hits / items / properties / group_range / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / hits / items / properties / group_range / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / data_vintage / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / data_vintage / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / license / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / license / typeAdded value: +[ + "string", + "null" +]
- Changed
find_equivalent24 fields changed- removed
Output schema / properties / provenance / items / properties / data_vintage / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / items / properties / data_vintage / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / items / properties / license / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / items / properties / license / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / results / properties / icd11 / properties / error / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / results / properties / icd11 / properties / error / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / results / properties / icd11 / properties / items / items / properties / uri / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / results / properties / icd11 / properties / items / items / properties / uri / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / results / properties / loinc / properties / error / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / results / properties / loinc / properties / error / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / results / properties / loinc / properties / items / items / properties / uri / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / results / properties / loinc / properties / items / items / properties / uri / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / results / properties / mesh / properties / error / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / results / properties / mesh / properties / error / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / results / properties / mesh / properties / items / items / properties / uri / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / results / properties / mesh / properties / items / items / properties / uri / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / results / properties / rxnorm / properties / error / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / results / properties / rxnorm / properties / error / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / results / properties / rxnorm / properties / items / items / properties / uri / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / results / properties / rxnorm / properties / items / items / properties / uri / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / results / properties / snomed / properties / error / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / results / properties / snomed / properties / error / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / results / properties / snomed / properties / items / items / properties / uri / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / results / properties / snomed / properties / items / items / properties / uri / typeAdded value: +[ + "string", + "null" +]
- Changed
icd11_chapters12 fields changed- removed
Output schema / properties / chapters / items / properties / code / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / chapters / items / properties / code / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / chapters / items / properties / code_range / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / chapters / items / properties / code_range / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / chapters / items / properties / error / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / chapters / items / properties / error / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / chapters / items / properties / title / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / chapters / items / properties / title / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / data_vintage / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / data_vintage / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / license / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / license / typeAdded value: +[ + "string", + "null" +]
- Changed
icd11_hierarchy8 fields changed- removed
Output schema / properties / entities / items / properties / code / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / entities / items / properties / code / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / entities / items / properties / code_range / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / entities / items / properties / code_range / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / data_vintage / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / data_vintage / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / license / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / license / typeAdded value: +[ + "string", + "null" +]
- Changed
icd11_lookup22 fields changed- removed
Output schema / properties / block_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / block_id / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / browser_url / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / browser_url / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / class_kind / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / class_kind / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / code / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / code / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / code_range / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / code_range / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / coding_note / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / coding_note / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / definition / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / definition / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / diagnostic_criteria / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / diagnostic_criteria / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / long_definition / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / long_definition / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / data_vintage / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / data_vintage / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / license / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / license / typeAdded value: +[ + "string", + "null" +]
- Changed
icd11_postcoordination4 fields changed- removed
Output schema / properties / provenance / properties / data_vintage / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / data_vintage / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / license / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / license / typeAdded value: +[ + "string", + "null" +]
- Changed
icd11_search6 fields changed- removed
Output schema / properties / entities / items / properties / code / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / entities / items / properties / code / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / data_vintage / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / data_vintage / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / license / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / license / typeAdded value: +[ + "string", + "null" +]
- Changed
loinc_answers4 fields changed- removed
Output schema / properties / provenance / properties / data_vintage / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / data_vintage / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / license / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / license / typeAdded value: +[ + "string", + "null" +]
- Changed
loinc_details6 fields changed- removed
Output schema / properties / external_copyright_notice / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / external_copyright_notice / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / data_vintage / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / data_vintage / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / license / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / license / typeAdded value: +[ + "string", + "null" +]
- Changed
loinc_panels4 fields changed- removed
Output schema / properties / provenance / properties / data_vintage / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / data_vintage / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / license / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / license / typeAdded value: +[ + "string", + "null" +]
- Changed
loinc_search6 fields changed- removed
Output schema / properties / items / items / properties / external_copyright_notice / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / items / items / properties / external_copyright_notice / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / data_vintage / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / data_vintage / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / license / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / license / typeAdded value: +[ + "string", + "null" +]
- Changed
map_icd10_to_icd114 fields changed- removed
Output schema / properties / provenance / properties / data_vintage / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / data_vintage / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / license / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / license / typeAdded value: +[ + "string", + "null" +]
- Changed
map_loinc_to_snomed7 fields changed- changed
Output schema / properties / loinc_details / anyOfPrevious 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" + } +] - removed
Output schema / properties / mapping_sources / items / properties / url / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / mapping_sources / items / properties / url / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / data_vintage / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / data_vintage / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / license / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / license / typeAdded value: +[ + "string", + "null" +]
- Changed
mesh_descriptor4 fields changed- removed
Output schema / properties / provenance / properties / data_vintage / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / data_vintage / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / license / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / license / typeAdded value: +[ + "string", + "null" +]
- Changed
mesh_qualifiers4 fields changed- removed
Output schema / properties / provenance / properties / data_vintage / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / data_vintage / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / license / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / license / typeAdded value: +[ + "string", + "null" +]
- Changed
mesh_search4 fields changed- removed
Output schema / properties / provenance / properties / data_vintage / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / data_vintage / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / license / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / license / typeAdded value: +[ + "string", + "null" +]
- Changed
mesh_tree4 fields changed- removed
Output schema / properties / provenance / properties / data_vintage / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / data_vintage / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / license / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / license / typeAdded value: +[ + "string", + "null" +]
- Changed
rxnorm_classes4 fields changed- removed
Output schema / properties / provenance / properties / data_vintage / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / data_vintage / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / license / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / license / typeAdded value: +[ + "string", + "null" +]
- Changed
rxnorm_concept4 fields changed- removed
Output schema / properties / provenance / properties / data_vintage / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / data_vintage / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / license / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / license / typeAdded value: +[ + "string", + "null" +]
- Changed
rxnorm_ingredients4 fields changed- removed
Output schema / properties / provenance / properties / data_vintage / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / data_vintage / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / license / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / license / typeAdded value: +[ + "string", + "null" +]
- Changed
rxnorm_ndc8 fields changed- removed
Output schema / properties / ndc / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / ndc / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / data_vintage / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / data_vintage / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / license / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / license / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / rxcui / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / rxcui / typeAdded value: +[ + "string", + "null" +]
- Changed
rxnorm_search4 fields changed- removed
Output schema / properties / provenance / properties / data_vintage / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / data_vintage / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / license / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / license / typeAdded value: +[ + "string", + "null" +]
- Changed
terminology_diff10 fields changed- removed
Output schema / properties / changelog_url / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / changelog_url / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / from_version / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / from_version / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / data_vintage / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / data_vintage / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / license / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / license / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / to_version / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / to_version / typeAdded value: +[ + "string", + "null" +]
- Changed
terminology_versions8 fields changed- removed
Output schema / properties / provenance / properties / data_vintage / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / data_vintage / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / properties / license / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / properties / license / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / terminologies / items / properties / changelog_url / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / terminologies / items / properties / changelog_url / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / terminologies / items / properties / notes / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / terminologies / items / properties / notes / typeAdded value: +[ + "string", + "null" +]
- Changed
validate_codes12 fields changed- removed
Output schema / properties / provenance / items / properties / data_vintage / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / items / properties / data_vintage / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / provenance / items / properties / license / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / provenance / items / properties / license / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / results / items / properties / active / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / results / items / properties / active / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / properties / results / items / properties / error / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / results / items / properties / error / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / results / items / properties / replaced_by / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / results / items / properties / replaced_by / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / results / items / properties / title / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / results / items / properties / title / typeAdded value: +[ + "string", + "null" +]
31 tool updates
v1.8.0- Changed
atc_classify3 fields changed- added
Output schema / properties / attributionAdded value: +{ + "description": "Canonical source URLs of this response (attribution list)", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / provenanceAdded 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" +} - changed
Output schema / requiredPrevious value: -[ - "drug_name", - "matches" -]New value: +[ + "drug_name", + "matches", + "provenance", + "attribution" +]
- Changed
atc_lookup3 fields changed- added
Output schema / properties / attributionAdded value: +{ + "description": "Canonical source URLs of this response (attribution list)", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / provenanceAdded 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" +} - changed
Output schema / requiredPrevious value: -[ - "atc_code", - "found", - "details" -]New value: +[ + "atc_code", + "found", + "details", + "provenance", + "attribution" +]
- Changed
atc_members3 fields changed- added
Output schema / properties / attributionAdded value: +{ + "description": "Canonical source URLs of this response (attribution list)", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / provenanceAdded 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" +} - changed
Output schema / requiredPrevious value: -[ - "atc_code", - "members" -]New value: +[ + "atc_code", + "members", + "provenance", + "attribution" +]
- Changed
cid10_chapter3 fields changed- added
Output schema / properties / attributionAdded value: +{ + "description": "Canonical source URLs of this response (attribution list)", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / provenanceAdded 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" +} - changed
Output schema / requiredPrevious value: -[ - "num", - "found", - "chapter", - "groups" -]New value: +[ + "num", + "found", + "chapter", + "groups", + "provenance", + "attribution" +]
- Changed
cid10_chapters3 fields changed- added
Output schema / properties / attributionAdded value: +{ + "description": "Canonical source URLs of this response (attribution list)", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / provenanceAdded 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" +} - changed
Output schema / requiredPrevious value: -[ - "chapters" -]New value: +[ + "chapters", + "provenance", + "attribution" +]
- Changed
cid10_lookup3 fields changed- added
Output schema / properties / attributionAdded value: +{ + "description": "Canonical source URLs of this response (attribution list)", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / provenanceAdded 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" +} - changed
Output schema / requiredPrevious value: -[ - "code", - "found", - "hit" -]New value: +[ + "code", + "found", + "hit", + "provenance", + "attribution" +]
- Changed
cid10_search3 fields changed- added
Output schema / properties / attributionAdded value: +{ + "description": "Canonical source URLs of this response (attribution list)", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / provenanceAdded 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" +} - changed
Output schema / requiredPrevious value: -[ - "query", - "level", - "total_count", - "shown_count", - "hits" -]New value: +[ + "query", + "level", + "total_count", + "shown_count", + "hits", + "provenance", + "attribution" +]
- Changed
find_equivalent26 fields changed- added
Input schema / properties / limitAdded 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" +} - added
Output schema / properties / attributionAdded value: +{ + "description": "Canonical source URLs of this response (attribution list)", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / groupsAdded 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" +} - added
Output schema / properties / provenanceAdded 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" +} - added
Output schema / properties / rankingAdded value: +{ + "additionalProperties": false, + "properties": { + "method": { + "const": "lexical", + "type": "string" + }, + "note": { + "type": "string" + } + }, + "required": [ + "method", + "note" + ], + "type": "object" +} - added
Output schema / properties / results / properties / icd11 / properties / items / items / properties / match_scoreAdded value: +{ + "maximum": 1, + "minimum": 0, + "type": "number" +} - added
Output schema / properties / results / properties / icd11 / properties / items / items / properties / rankAdded value: +{ + "maximum": 9007199254740991, + "minimum": 1, + "type": "integer" +} - added
Output schema / properties / results / properties / icd11 / properties / items / items / properties / uriAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] +} - changed
Output schema / properties / results / properties / icd11 / properties / items / items / requiredPrevious value: -[ - "code", - "title" -]New value: +[ + "code", + "title", + "uri", + "match_score", + "rank" +] - added
Output schema / properties / results / properties / loinc / properties / items / items / properties / match_scoreAdded value: +{ + "maximum": 1, + "minimum": 0, + "type": "number" +} - added
Output schema / properties / results / properties / loinc / properties / items / items / properties / rankAdded value: +{ + "maximum": 9007199254740991, + "minimum": 1, + "type": "integer" +} - added
Output schema / properties / results / properties / loinc / properties / items / items / properties / uriAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] +} - changed
Output schema / properties / results / properties / loinc / properties / items / items / requiredPrevious value: -[ - "code", - "title" -]New value: +[ + "code", + "title", + "uri", + "match_score", + "rank" +] - added
Output schema / properties / results / properties / mesh / properties / items / items / properties / match_scoreAdded value: +{ + "maximum": 1, + "minimum": 0, + "type": "number" +} - added
Output schema / properties / results / properties / mesh / properties / items / items / properties / rankAdded value: +{ + "maximum": 9007199254740991, + "minimum": 1, + "type": "integer" +} - added
Output schema / properties / results / properties / mesh / properties / items / items / properties / uriAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] +} - changed
Output schema / properties / results / properties / mesh / properties / items / items / requiredPrevious value: -[ - "code", - "title" -]New value: +[ + "code", + "title", + "uri", + "match_score", + "rank" +] - added
Output schema / properties / results / properties / rxnorm / properties / items / items / properties / match_scoreAdded value: +{ + "maximum": 1, + "minimum": 0, + "type": "number" +} - added
Output schema / properties / results / properties / rxnorm / properties / items / items / properties / rankAdded value: +{ + "maximum": 9007199254740991, + "minimum": 1, + "type": "integer" +} - added
Output schema / properties / results / properties / rxnorm / properties / items / items / properties / uriAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] +} - changed
Output schema / properties / results / properties / rxnorm / properties / items / items / requiredPrevious value: -[ - "code", - "title" -]New value: +[ + "code", + "title", + "uri", + "match_score", + "rank" +] - added
Output schema / properties / results / properties / snomed / properties / items / items / properties / match_scoreAdded value: +{ + "maximum": 1, + "minimum": 0, + "type": "number" +} - added
Output schema / properties / results / properties / snomed / properties / items / items / properties / rankAdded value: +{ + "maximum": 9007199254740991, + "minimum": 1, + "type": "integer" +} - added
Output schema / properties / results / properties / snomed / properties / items / items / properties / uriAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] +} - changed
Output schema / properties / results / properties / snomed / properties / items / items / requiredPrevious value: -[ - "code", - "title" -]New value: +[ + "code", + "title", + "uri", + "match_score", + "rank" +] - changed
Output schema / requiredPrevious value: -[ - "term", - "source_terminology", - "searched_terminologies", - "results" -]New value: +[ + "term", + "source_terminology", + "searched_terminologies", + "results", + "groups", + "ranking", + "provenance", + "attribution" +]
- Changed
icd11_chapters4 fields changed- changed
Input schema / properties / language / descriptionPrevious 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." - added
Output schema / properties / attributionAdded value: +{ + "description": "Canonical source URLs of this response (attribution list)", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / provenanceAdded 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" +} - changed
Output schema / requiredPrevious value: -[ - "chapters" -]New value: +[ + "chapters", + "provenance", + "attribution" +]
- Changed
icd11_hierarchy3 fields changed- added
Output schema / properties / attributionAdded value: +{ + "description": "Canonical source URLs of this response (attribution list)", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / provenanceAdded 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" +} - changed
Output schema / requiredPrevious value: -[ - "code", - "direction", - "entities" -]New value: +[ + "code", + "direction", + "entities", + "provenance", + "attribution" +]
- Changed
icd11_lookup4 fields changed- changed
Input schema / properties / language / descriptionPrevious 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." - added
Output schema / properties / attributionAdded value: +{ + "description": "Canonical source URLs of this response (attribution list)", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / provenanceAdded 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" +} - changed
Output schema / requiredPrevious 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" +]
- Changed
icd11_postcoordination3 fields changed- added
Output schema / properties / attributionAdded value: +{ + "description": "Canonical source URLs of this response (attribution list)", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / provenanceAdded 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" +} - changed
Output schema / requiredPrevious value: -[ - "code", - "axes" -]New value: +[ + "code", + "axes", + "provenance", + "attribution" +]
- Changed
icd11_search4 fields changed- changed
Input schema / properties / language / descriptionPrevious 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." - added
Output schema / properties / attributionAdded value: +{ + "description": "Canonical source URLs of this response (attribution list)", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / provenanceAdded 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" +} - changed
Output schema / requiredPrevious value: -[ - "query", - "total_count", - "entities" -]New value: +[ + "query", + "total_count", + "entities", + "provenance", + "attribution" +]
- Changed
loinc_answers3 fields changed- added
Output schema / properties / attributionAdded value: +{ + "description": "Canonical source URLs of this response (attribution list)", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / provenanceAdded 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" +} - changed
Output schema / requiredPrevious value: -[ - "loinc_num", - "answers" -]New value: +[ + "loinc_num", + "answers", + "provenance", + "attribution" +]
- Changed
loinc_details4 fields changed- added
Output schema / properties / attributionAdded value: +{ + "description": "Canonical source URLs of this response (attribution list)", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / external_copyright_noticeAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / provenanceAdded 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" +} - changed
Output schema / requiredPrevious 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" +]
- Changed
loinc_panels3 fields changed- added
Output schema / properties / attributionAdded value: +{ + "description": "Canonical source URLs of this response (attribution list)", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / provenanceAdded 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" +} - changed
Output schema / requiredPrevious value: -[ - "loinc_num", - "panel" -]New value: +[ + "loinc_num", + "panel", + "provenance", + "attribution" +]
- Changed
loinc_search5 fields changed- added
Output schema / properties / attributionAdded value: +{ + "description": "Canonical source URLs of this response (attribution list)", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / items / items / properties / external_copyright_noticeAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] +} - changed
Output schema / properties / items / items / requiredPrevious 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" +] - added
Output schema / properties / provenanceAdded 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" +} - changed
Output schema / requiredPrevious value: -[ - "query", - "total_count", - "shown_count", - "items" -]New value: +[ + "query", + "total_count", + "shown_count", + "items", + "provenance", + "attribution" +]
- Changed
map_icd10_to_icd113 fields changed- added
Output schema / properties / attributionAdded value: +{ + "description": "Canonical source URLs of this response (attribution list)", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / provenanceAdded 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" +} - changed
Output schema / requiredPrevious value: -[ - "query", - "found", - "icd10", - "primary", - "alternatives", - "source" -]New value: +[ + "query", + "found", + "icd10", + "primary", + "alternatives", + "source", + "provenance", + "attribution" +]
- Changed
map_loinc_to_snomed3 fields changed- added
Output schema / properties / attributionAdded value: +{ + "description": "Canonical source URLs of this response (attribution list)", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / provenanceAdded 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" +} - changed
Output schema / requiredPrevious value: -[ - "loinc_code", - "loinc_details", - "status", - "guidance", - "mapping_sources" -]New value: +[ + "loinc_code", + "loinc_details", + "status", + "guidance", + "mapping_sources", + "provenance", + "attribution" +]
- Changed
mesh_descriptor4 fields changed- changed
Input schema / properties / language / descriptionPrevious 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." - added
Output schema / properties / attributionAdded value: +{ + "description": "Canonical source URLs of this response (attribution list)", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / provenanceAdded 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" +} - changed
Output schema / requiredPrevious value: -[ - "id", - "uri", - "label", - "scope_note", - "tree_numbers", - "concepts", - "qualifiers" -]New value: +[ + "id", + "uri", + "label", + "scope_note", + "tree_numbers", + "concepts", + "qualifiers", + "provenance", + "attribution" +]
- Changed
mesh_qualifiers3 fields changed- added
Output schema / properties / attributionAdded value: +{ + "description": "Canonical source URLs of this response (attribution list)", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / provenanceAdded 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" +} - changed
Output schema / requiredPrevious value: -[ - "mesh_id", - "qualifiers" -]New value: +[ + "mesh_id", + "qualifiers", + "provenance", + "attribution" +]
- Changed
mesh_search4 fields changed- changed
Input schema / properties / language / descriptionPrevious 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." - added
Output schema / properties / attributionAdded value: +{ + "description": "Canonical source URLs of this response (attribution list)", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / provenanceAdded 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" +} - changed
Output schema / requiredPrevious value: -[ - "query", - "match", - "total_count", - "descriptors" -]New value: +[ + "query", + "match", + "total_count", + "descriptors", + "provenance", + "attribution" +]
- Changed
mesh_tree3 fields changed- added
Output schema / properties / attributionAdded value: +{ + "description": "Canonical source URLs of this response (attribution list)", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / provenanceAdded 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" +} - changed
Output schema / requiredPrevious value: -[ - "mesh_id", - "tree_numbers" -]New value: +[ + "mesh_id", + "tree_numbers", + "provenance", + "attribution" +]
- Changed
rxnorm_classes3 fields changed- added
Output schema / properties / attributionAdded value: +{ + "description": "Canonical source URLs of this response (attribution list)", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / provenanceAdded 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" +} - changed
Output schema / requiredPrevious value: -[ - "rxcui", - "classes" -]New value: +[ + "rxcui", + "classes", + "provenance", + "attribution" +]
- Changed
rxnorm_concept3 fields changed- added
Output schema / properties / attributionAdded value: +{ + "description": "Canonical source URLs of this response (attribution list)", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / provenanceAdded 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" +} - changed
Output schema / requiredPrevious 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" +]
- Changed
rxnorm_ingredients3 fields changed- added
Output schema / properties / attributionAdded value: +{ + "description": "Canonical source URLs of this response (attribution list)", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / provenanceAdded 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" +} - changed
Output schema / requiredPrevious value: -[ - "rxcui", - "ingredients" -]New value: +[ + "rxcui", + "ingredients", + "provenance", + "attribution" +]
- Changed
rxnorm_ndc3 fields changed- added
Output schema / properties / attributionAdded value: +{ + "description": "Canonical source URLs of this response (attribution list)", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / provenanceAdded 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" +} - changed
Output schema / requiredPrevious value: -[ - "query_mode", - "rxcui", - "ndc", - "ndcs" -]New value: +[ + "query_mode", + "rxcui", + "ndc", + "ndcs", + "provenance", + "attribution" +]
- Changed
rxnorm_search3 fields changed- added
Output schema / properties / attributionAdded value: +{ + "description": "Canonical source URLs of this response (attribution list)", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / provenanceAdded 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" +} - changed
Output schema / requiredPrevious value: -[ - "query", - "total_count", - "drugs" -]New value: +[ + "query", + "total_count", + "drugs", + "provenance", + "attribution" +]
- Changed
terminology_diff3 fields changed- added
Output schema / properties / attributionAdded value: +{ + "description": "Canonical source URLs of this response (attribution list)", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / provenanceAdded 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" +} - changed
Output schema / requiredPrevious 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" +]
- Changed
terminology_versions3 fields changed- added
Output schema / properties / attributionAdded value: +{ + "description": "Canonical source URLs of this response (attribution list)", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / provenanceAdded 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" +} - changed
Output schema / requiredPrevious value: -[ - "generated", - "total", - "terminologies" -]New value: +[ + "generated", + "total", + "terminologies", + "provenance", + "attribution" +]
- Changed
validate_codes3 fields changed- added
Output schema / properties / attributionAdded value: +{ + "description": "Canonical source URLs of this response (attribution list)", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / provenanceAdded 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" +} - changed
Output schema / requiredPrevious value: -[ - "total", - "valid_count", - "invalid_count", - "error_count", - "results" -]New value: +[ + "total", + "valid_count", + "invalid_count", + "error_count", + "results", + "provenance", + "attribution" +]
31 tool updates
v1.5.7- Changed
atc_classify1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
atc_lookup1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
atc_members1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
cid10_chapter4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - changed
Output schema / properties / chapter / anyOfPrevious 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" + } +] - added
Output schema / properties / num / maximumAdded value: +9007199254740991 - added
Output schema / properties / num / minimumAdded value: +-9007199254740991
- Changed
cid10_chapters3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / chapters / items / properties / num / maximumAdded value: +9007199254740991 - added
Output schema / properties / chapters / items / properties / num / minimumAdded value: +-9007199254740991
- Changed
cid10_lookup2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - changed
Output schema / properties / hit / anyOfPrevious 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" + } +]
- Changed
cid10_search8 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - changed
Output schema / properties / hits / items / properties / chapter_num / anyOfPrevious value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } +] - added
Output schema / properties / hits / items / properties / group_range / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / hits / items / properties / group_range / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / shown_count / maximumAdded value: +9007199254740991 - added
Output schema / properties / shown_count / minimumAdded value: +-9007199254740991 - added
Output schema / properties / total_count / maximumAdded value: +9007199254740991 - added
Output schema / properties / total_count / minimumAdded value: +-9007199254740991
- Changed
find_equivalent11 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / results / properties / icd11 / properties / error / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / results / properties / icd11 / properties / error / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / results / properties / loinc / properties / error / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / results / properties / loinc / properties / error / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / results / properties / mesh / properties / error / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / results / properties / mesh / properties / error / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / results / properties / rxnorm / properties / error / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / results / properties / rxnorm / properties / error / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / results / properties / snomed / properties / error / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / results / properties / snomed / properties / error / typeRemoved value: -[ - "string", - "null" -]
- Changed
icd11_chapters11 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / chapters / items / properties / code / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / chapters / items / properties / code / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / chapters / items / properties / code_range / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / chapters / items / properties / code_range / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / chapters / items / properties / error / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / chapters / items / properties / error / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / chapters / items / properties / number / maximumAdded value: +9007199254740991 - added
Output schema / properties / chapters / items / properties / number / minimumAdded value: +-9007199254740991 - added
Output schema / properties / chapters / items / properties / title / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / chapters / items / properties / title / typeRemoved value: -[ - "string", - "null" -]
- Changed
icd11_hierarchy5 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / entities / items / properties / code / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / entities / items / properties / code / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / entities / items / properties / code_range / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / entities / items / properties / code_range / typeRemoved value: -[ - "string", - "null" -]
- Changed
icd11_lookup19 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / block_id / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / block_id / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / browser_url / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / browser_url / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / class_kind / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / class_kind / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / code / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / code / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / code_range / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / code_range / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / coding_note / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / coding_note / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / definition / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / definition / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / diagnostic_criteria / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / diagnostic_criteria / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / long_definition / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / long_definition / typeRemoved value: -[ - "string", - "null" -]
- Changed
icd11_postcoordination2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - changed
Output schema / properties / axes / items / properties / value_count / anyOfPrevious value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } +]
- Changed
icd11_search5 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / entities / items / properties / code / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / entities / items / properties / code / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / total_count / maximumAdded value: +9007199254740991 - added
Output schema / properties / total_count / minimumAdded value: +-9007199254740991
- Changed
loinc_answers3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / answers / items / properties / sequence / maximumAdded value: +9007199254740991 - added
Output schema / properties / answers / items / properties / sequence / minimumAdded value: +-9007199254740991
- Changed
loinc_details1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
loinc_panels2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - changed
Output schema / properties / panel / anyOfPrevious 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" + } +]
- Changed
loinc_search5 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / shown_count / maximumAdded value: +9007199254740991 - added
Output schema / properties / shown_count / minimumAdded value: +-9007199254740991 - added
Output schema / properties / total_count / maximumAdded value: +9007199254740991 - added
Output schema / properties / total_count / minimumAdded value: +-9007199254740991
- Changed
map_icd10_to_icd115 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / alternatives / items / properties / depth / maximumAdded value: +9007199254740991 - added
Output schema / properties / alternatives / items / properties / depth / minimumAdded value: +-9007199254740991 - changed
Output schema / properties / icd10 / anyOfPrevious 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" + } +] - changed
Output schema / properties / primary / anyOfPrevious 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" + } +]
- Changed
map_loinc_to_snomed4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - changed
Output schema / properties / loinc_details / anyOfPrevious 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" + } +] - added
Output schema / properties / mapping_sources / items / properties / url / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / mapping_sources / items / properties / url / typeRemoved value: -[ - "string", - "null" -]
- Changed
mesh_descriptor1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
mesh_qualifiers1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
mesh_search3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / total_count / maximumAdded value: +9007199254740991 - added
Output schema / properties / total_count / minimumAdded value: +-9007199254740991
- Changed
mesh_tree1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
rxnorm_classes1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
rxnorm_concept1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
rxnorm_ingredients1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
rxnorm_ndc5 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / ndc / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / ndc / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / rxcui / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / rxcui / typeRemoved value: -[ - "string", - "null" -]
- Changed
rxnorm_search3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / total_count / maximumAdded value: +9007199254740991 - added
Output schema / properties / total_count / minimumAdded value: +-9007199254740991
- Changed
terminology_diff8 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / changelog_url / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / changelog_url / typeRemoved value: -[ - "string", - "null" -] - changed
Output schema / properties / cross_revision_summary / anyOfPrevious 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" + } +] - added
Output schema / properties / from_version / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / from_version / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / to_version / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / to_version / typeRemoved value: -[ - "string", - "null" -]
- Changed
terminology_versions7 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / terminologies / items / properties / changelog_url / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / terminologies / items / properties / changelog_url / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / terminologies / items / properties / notes / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / terminologies / items / properties / notes / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / total / maximumAdded value: +9007199254740991 - added
Output schema / properties / total / minimumAdded value: +-9007199254740991
- Changed
validate_codes18 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / codes / items / additionalPropertiesRemoved value: -false - added
Output schema / properties / error_count / maximumAdded value: +9007199254740991 - added
Output schema / properties / error_count / minimumAdded value: +-9007199254740991 - added
Output schema / properties / invalid_count / maximumAdded value: +9007199254740991 - added
Output schema / properties / invalid_count / minimumAdded value: +-9007199254740991 - added
Output schema / properties / results / items / properties / active / anyOfAdded value: +[ + { + "type": "boolean" + }, + { + "type": "null" + } +] - removed
Output schema / properties / results / items / properties / active / typeRemoved value: -[ - "boolean", - "null" -] - added
Output schema / properties / results / items / properties / error / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / results / items / properties / error / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / results / items / properties / replaced_by / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / results / items / properties / replaced_by / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / results / items / properties / title / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / results / items / properties / title / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / total / maximumAdded value: +9007199254740991 - added
Output schema / properties / total / minimumAdded value: +-9007199254740991 - added
Output schema / properties / valid_count / maximumAdded value: +9007199254740991 - added
Output schema / properties / valid_count / minimumAdded value: +-9007199254740991
2 tool updates
v1.5.0- Changed
map_icd10_to_icd111 field changed- changed
Output 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" +}
- Changed
map_loinc_to_snomed1 field changed- changed
Output 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" +}
5 tool updates
v1.4.0- Changed
mesh_descriptor1 field changed- added
Input schema / properties / languageAdded value: +{ + "default": "en", + "description": "Language code (default: en)", + "enum": [ + "en", + "es", + "pt", + "fr", + "de", + "it", + "zh", + "ja", + "ar", + "ru" + ], + "type": "string" +}
- Changed
mesh_search1 field changed- added
Input schema / properties / languageAdded value: +{ + "default": "en", + "description": "Language code (default: en)", + "enum": [ + "en", + "es", + "pt", + "fr", + "de", + "it", + "zh", + "ja", + "ar", + "ru" + ], + "type": "string" +}
- Added
terminology_diff - Added
terminology_versions - Added
validate_codes
28 tool updates
v1.2.1- First observed
atc_classify - First observed
atc_lookup - First observed
atc_members - First observed
cid10_chapter - First observed
cid10_chapters - First observed
cid10_lookup - First observed
cid10_search - First observed
find_equivalent - First observed
icd11_chapters - First observed
icd11_hierarchy - First observed
icd11_lookup - First observed
icd11_postcoordination - First observed
icd11_search - First observed
loinc_answers - First observed
loinc_details - First observed
loinc_panels - First observed
loinc_search - First observed
map_icd10_to_icd11 - First observed
map_loinc_to_snomed - First observed
mesh_descriptor - First observed
mesh_qualifiers - First observed
mesh_search - First observed
mesh_tree - First observed
rxnorm_classes - First observed
rxnorm_concept - First observed
rxnorm_ingredients - First observed
rxnorm_ndc - First observed
rxnorm_search
TDQS
Scored across 33 tools
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.
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.
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.
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
Related MCP Connectors
MCP server for medicaid-intelligence
Hosted MCP server exposing US hospital procedure cost data to AI assistants
Related MCP Servers
- -licenseNot gradedqualityNot gradedmaintenanceA FastAPI backend service that connects to Azure's Managed Chat Project using GPT-4o to provide medical chatbot functionality through a simple HTML interface.-
- AlicenseBqualityDmaintenanceAn MCP server that provides comprehensive medical information by querying multiple authoritative medical APIs including FDA, WHO, PubMed, Google Scholar, and RxNorm.111145 npm114MIT
- AlicenseNot gradedqualityFmaintenanceProvides 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 npm3MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI-powered medical information retrieval through FHIR clinical document search and GraphRAG-based exploration of medical entities and relationships. Combines vector search with knowledge graph queries for comprehensive healthcare data analysis.MIT