Medical Terminologies MCP
A unified MCP server providing programmatic access to six medical terminologies including ICD-11, LOINC, RxNorm, MeSH, ATC, and Brazilian CID-10. It offers 33 tools for code lookup, cross-terminology mapping, and batch validation, with authoritative provenance blocks on every response.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://medical.sidneybissoli.com/mcpWhat its tools do
33 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Read-only (33)
icd11_searchicd11_lookupicd11_hierarchyicd11_chaptersicd11_postcoordinationloinc_searchloinc_detailsloinc_answersloinc_panelsrxnorm_searchrxnorm_conceptrxnorm_ingredientsrxnorm_classesrxnorm_ndcmesh_searchmesh_descriptormesh_treemesh_qualifiersmap_icd10_to_icd11validate_codesfind_equivalentharmonize_termsatc_classifyatc_lookupatc_memberscid10_searchcid10_lookupcid10_chapterscid10_chapterterminology_versionsterminology_diffsearchfetch
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Look up ICD-11 codes for specific diagnoses
- Map ICD-10 codes to ICD-11 equivalents
- Search LOINC codes for lab measurements
- Validate medical codes across terminologies
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- medical-terminologies-mcp 2.4.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 33 advertised
- Resources
- 4 advertised
- Resource templates
- 0 advertised
- Prompts
- 3 advertised
{
"tools": {
"listChanged": true
},
"prompts": {
"listChanged": true
},
"resources": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
33 advertised
icd11_search — Search ICD-11
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.
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"minLength": 1,
"description": "Search text (disease name, symptom, or keyword)"
},
"language": {
"enum": [
"en",
"es",
"pt",
"fr",
"de",
"it",
"zh",
"ja",
"ar",
"ru"
],
"type": "string",
"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."
},
"max_results": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "Maximum number of results (1-100). Default: 25"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"query",
"total_count",
"entities",
"provenance",
"attribution"
],
"properties": {
"query": {
"type": "string",
"description": "The search text as submitted."
},
"entities": {
"type": "array",
"items": {
"type": "object",
"required": [
"code",
"title",
"score",
"uri",
"is_leaf",
"matching_pvs"
],
"properties": {
"uri": {
"type": "string"
},
"code": {
"type": [
"string",
"null"
]
},
"score": {
"type": "number"
},
"title": {
"type": "string"
},
"is_leaf": {
"type": "boolean"
},
"matching_pvs": {
"type": "array",
"items": {
"type": "object",
"required": [
"property_id",
"label",
"score"
],
"properties": {
"label": {
"type": "string"
},
"score": {
"type": "number"
},
"important": {
"type": "boolean"
},
"property_id": {
"type": "string"
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
},
"description": "Matching ICD-11 MMS entities in WHO relevance order, at most max_results."
},
"provenance": {
"type": "object",
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"properties": {
"source": {
"type": "string",
"description": "Official upstream source of this data"
},
"derived": {
"type": "boolean",
"description": "Present (true) only when this server computed the value (e.g. a ranking or summary statistics) instead of passing on what the source returned"
},
"license": {
"type": [
"string",
"null"
],
"description": "License / legal regime of the data"
},
"notices": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Caveats the source publishes about the data, verbatim (license statements are not repeated here; see the info://licenses resource). Absent when there is none"
},
"citation": {
"type": "string",
"description": "Ready-to-use citation/attribution string"
},
"revision": {
"type": "object",
"required": [
"status",
"note"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"description": "O específico da fonte: o que revisa, quando, por quê"
},
"status": {
"enum": [
"current",
"provisional",
"final"
],
"type": "string",
"description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte"
}
},
"description": "Whether the data can still change at the source: current = the version in force, the source may revise it; provisional = preliminary; final = will not change. Absent when unknown",
"additionalProperties": false
},
"retrieval": {
"anyOf": [
{
"type": "object",
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"properties": {
"attempts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Tentativas somadas, incluindo as repetidas (>= requests)"
},
"requests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)"
},
"unstable": {
"type": "boolean",
"description": "true se houve repetição (attempts > requests) ou alguma anomalia"
},
"anomalies": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"count"
],
"properties": {
"kind": {
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string",
"description": "Classe da anomalia (vocabulário fechado do contrato)"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Ocorrências desta classe na chamada"
}
},
"additionalProperties": false
},
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Origin diagnostics of THIS source in this call: 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)"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the source (API base or dataset release)"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Version/release of the data as exposed by the source; null when not exposed"
},
"retrieved_at": {
"type": "string",
"description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant."
},
"field_sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"fields",
"source_url",
"dataset_id",
"data_vintage",
"retrieved_at"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Campos do payload atribuídos a esta sub-fonte"
},
"dataset_id": {
"type": [
"string",
"null"
],
"description": "Identificador do conjunto da sub-fonte"
},
"source_url": {
"type": "string",
"description": "URL canônica da sub-fonte que originou estes campos"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Vintage/competência da sub-fonte"
},
"retrieved_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 da extração desta sub-fonte na origem"
},
"served_from_cache": {
"type": [
"boolean",
"null"
],
"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"
}
},
"description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
"additionalProperties": false
},
"minItems": 1,
"description": "Present only when the response joins parts from different origins or extraction instants: for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses"
},
"derivation_note": {
"type": "string",
"description": "What this server computed; present together with derived"
}
},
"description": "Provenance block: source, URL, data vintage, extraction instant, origin diagnostics, citation, license",
"additionalProperties": false
},
"attribution": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical source URLs of this response (attribution list)"
},
"total_count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Number of entities the WHO search returned, before the max_results cap."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}icd11_lookup — ICD-11 Entity Details
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.
{
"type": "object",
"properties": {
"uri": {
"type": "string",
"format": "uri",
"description": "Full ICD-11 foundation URI"
},
"code": {
"type": "string",
"minLength": 1,
"description": "ICD-11 code (e.g., \"BA00\", \"1A00\")"
},
"language": {
"enum": [
"en",
"es",
"pt",
"fr",
"de",
"it",
"zh",
"ja",
"ar",
"ru"
],
"type": "string",
"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."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"code",
"code_range",
"uri",
"title",
"class_kind",
"block_id",
"definition",
"long_definition",
"diagnostic_criteria",
"coding_note",
"exclusions",
"inclusions",
"index_terms",
"browser_url",
"provenance",
"attribution"
],
"properties": {
"uri": {
"type": "string",
"description": "WHO ICD-11 entity URI."
},
"code": {
"type": [
"string",
"null"
],
"description": "ICD-11 MMS code (e.g. \"BA00\"); null for blocks and chapters, which have a code_range instead."
},
"title": {
"type": "string",
"description": "Official title in the requested language (\"Unknown\" when the WHO returns none)."
},
"block_id": {
"type": [
"string",
"null"
],
"description": "WHO block identifier for blocks; null otherwise."
},
"class_kind": {
"type": [
"string",
"null"
],
"description": "WHO class kind (e.g. \"chapter\", \"block\", \"category\"); null when the WHO does not state it."
},
"code_range": {
"type": [
"string",
"null"
],
"description": "Code range of a block or chapter (e.g. \"BA00-BA0Z\"); null for coded categories."
},
"definition": {
"type": [
"string",
"null"
],
"description": "Official short definition; null when the WHO publishes none."
},
"exclusions": {
"type": "array",
"items": {
"type": "object",
"required": [
"uri",
"label"
],
"properties": {
"uri": {
"type": "string"
},
"label": {
"type": "string"
}
},
"additionalProperties": false
},
"description": "Exclusion entries (conditions coded elsewhere), each with its URI and label."
},
"inclusions": {
"type": "array",
"items": {
"type": "object",
"required": [
"uri",
"label"
],
"properties": {
"uri": {
"type": "string"
},
"label": {
"type": "string"
}
},
"additionalProperties": false
},
"description": "Inclusion entries (synonyms and terms included under this entity), each with its URI and label."
},
"provenance": {
"type": "object",
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"properties": {
"source": {
"type": "string",
"description": "Official upstream source of this data"
},
"derived": {
"type": "boolean",
"description": "Present (true) only when this server computed the value (e.g. a ranking or summary statistics) instead of passing on what the source returned"
},
"license": {
"type": [
"string",
"null"
],
"description": "License / legal regime of the data"
},
"notices": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Caveats the source publishes about the data, verbatim (license statements are not repeated here; see the info://licenses resource). Absent when there is none"
},
"citation": {
"type": "string",
"description": "Ready-to-use citation/attribution string"
},
"revision": {
"type": "object",
"required": [
"status",
"note"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"description": "O específico da fonte: o que revisa, quando, por quê"
},
"status": {
"enum": [
"current",
"provisional",
"final"
],
"type": "string",
"description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte"
}
},
"description": "Whether the data can still change at the source: current = the version in force, the source may revise it; provisional = preliminary; final = will not change. Absent when unknown",
"additionalProperties": false
},
"retrieval": {
"anyOf": [
{
"type": "object",
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"properties": {
"attempts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Tentativas somadas, incluindo as repetidas (>= requests)"
},
"requests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)"
},
"unstable": {
"type": "boolean",
"description": "true se houve repetição (attempts > requests) ou alguma anomalia"
},
"anomalies": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"count"
],
"properties": {
"kind": {
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string",
"description": "Classe da anomalia (vocabulário fechado do contrato)"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Ocorrências desta classe na chamada"
}
},
"additionalProperties": false
},
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Origin diagnostics of THIS source in this call: 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)"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the source (API base or dataset release)"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Version/release of the data as exposed by the source; null when not exposed"
},
"retrieved_at": {
"type": "string",
"description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant."
},
"field_sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"fields",
"source_url",
"dataset_id",
"data_vintage",
"retrieved_at"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Campos do payload atribuídos a esta sub-fonte"
},
"dataset_id": {
"type": [
"string",
"null"
],
"description": "Identificador do conjunto da sub-fonte"
},
"source_url": {
"type": "string",
"description": "URL canônica da sub-fonte que originou estes campos"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Vintage/competência da sub-fonte"
},
"retrieved_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 da extração desta sub-fonte na origem"
},
"served_from_cache": {
"type": [
"boolean",
"null"
],
"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"
}
},
"description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
"additionalProperties": false
},
"minItems": 1,
"description": "Present only when the response joins parts from different origins or extraction instants: for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses"
},
"derivation_note": {
"type": "string",
"description": "What this server computed; present together with derived"
}
},
"description": "Provenance block: source, URL, data vintage, extraction instant, origin diagnostics, citation, license",
"additionalProperties": false
},
"attribution": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical source URLs of this response (attribution list)"
},
"browser_url": {
"type": [
"string",
"null"
],
"description": "Link to the entity in the WHO ICD-11 browser; null when the WHO returns none."
},
"coding_note": {
"type": [
"string",
"null"
],
"description": "Official coding note; null when the WHO publishes none."
},
"index_terms": {
"type": "array",
"items": {
"type": "object",
"required": [
"uri",
"label"
],
"properties": {
"uri": {
"type": "string"
},
"label": {
"type": "string"
}
},
"additionalProperties": false
},
"description": "Index terms that lead to this entity, each with its URI and label."
},
"long_definition": {
"type": [
"string",
"null"
],
"description": "Official detailed description; null when the WHO publishes none."
},
"diagnostic_criteria": {
"type": [
"string",
"null"
],
"description": "Official diagnostic criteria text; null when the WHO publishes none."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}icd11_hierarchy — Browse ICD-11 Hierarchy
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.
{
"type": "object",
"required": [
"direction"
],
"properties": {
"uri": {
"type": "string",
"format": "uri",
"description": "Entity URI as returned by icd11_lookup, icd11_search or a previous icd11_hierarchy call"
},
"code": {
"type": "string",
"minLength": 1,
"description": "ICD-11 code (e.g., \"BA00\", \"5A11\") or block range (e.g., \"5A10-5A2Y\")"
},
"language": {
"enum": [
"en",
"es",
"pt",
"fr",
"de",
"it",
"zh",
"ja",
"ar",
"ru"
],
"type": "string",
"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."
},
"direction": {
"enum": [
"parents",
"children"
],
"type": "string",
"description": "Direction: \"parents\" for ancestors, \"children\" for subtypes"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"code",
"direction",
"entities",
"provenance",
"attribution"
],
"properties": {
"code": {
"type": "string",
"description": "The code, block range or URI the walk started from, as submitted."
},
"entities": {
"type": "array",
"items": {
"type": "object",
"required": [
"code",
"code_range",
"title",
"uri"
],
"properties": {
"uri": {
"type": "string"
},
"code": {
"type": [
"string",
"null"
]
},
"title": {
"type": "string"
},
"code_range": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
},
"description": "Direct parents or children of the entity; empty when it has none. Entries the WHO failed to return are left out."
},
"direction": {
"enum": [
"parents",
"children"
],
"type": "string",
"description": "Direction walked: parents (ancestors) or children (subtypes)."
},
"provenance": {
"type": "object",
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"properties": {
"source": {
"type": "string",
"description": "Official upstream source of this data"
},
"derived": {
"type": "boolean",
"description": "Present (true) only when this server computed the value (e.g. a ranking or summary statistics) instead of passing on what the source returned"
},
"license": {
"type": [
"string",
"null"
],
"description": "License / legal regime of the data"
},
"notices": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Caveats the source publishes about the data, verbatim (license statements are not repeated here; see the info://licenses resource). Absent when there is none"
},
"citation": {
"type": "string",
"description": "Ready-to-use citation/attribution string"
},
"revision": {
"type": "object",
"required": [
"status",
"note"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"description": "O específico da fonte: o que revisa, quando, por quê"
},
"status": {
"enum": [
"current",
"provisional",
"final"
],
"type": "string",
"description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte"
}
},
"description": "Whether the data can still change at the source: current = the version in force, the source may revise it; provisional = preliminary; final = will not change. Absent when unknown",
"additionalProperties": false
},
"retrieval": {
"anyOf": [
{
"type": "object",
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"properties": {
"attempts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Tentativas somadas, incluindo as repetidas (>= requests)"
},
"requests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)"
},
"unstable": {
"type": "boolean",
"description": "true se houve repetição (attempts > requests) ou alguma anomalia"
},
"anomalies": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"count"
],
"properties": {
"kind": {
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string",
"description": "Classe da anomalia (vocabulário fechado do contrato)"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Ocorrências desta classe na chamada"
}
},
"additionalProperties": false
},
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Origin diagnostics of THIS source in this call: 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)"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the source (API base or dataset release)"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Version/release of the data as exposed by the source; null when not exposed"
},
"retrieved_at": {
"type": "string",
"description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant."
},
"field_sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"fields",
"source_url",
"dataset_id",
"data_vintage",
"retrieved_at"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Campos do payload atribuídos a esta sub-fonte"
},
"dataset_id": {
"type": [
"string",
"null"
],
"description": "Identificador do conjunto da sub-fonte"
},
"source_url": {
"type": "string",
"description": "URL canônica da sub-fonte que originou estes campos"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Vintage/competência da sub-fonte"
},
"retrieved_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 da extração desta sub-fonte na origem"
},
"served_from_cache": {
"type": [
"boolean",
"null"
],
"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"
}
},
"description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
"additionalProperties": false
},
"minItems": 1,
"description": "Present only when the response joins parts from different origins or extraction instants: for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses"
},
"derivation_note": {
"type": "string",
"description": "What this server computed; present together with derived"
}
},
"description": "Provenance block: source, URL, data vintage, extraction instant, origin diagnostics, citation, license",
"additionalProperties": false
},
"attribution": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical source URLs of this response (attribution list)"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}icd11_chapters — List ICD-11 Chapters
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.
{
"type": "object",
"properties": {
"language": {
"enum": [
"en",
"es",
"pt",
"fr",
"de",
"it",
"zh",
"ja",
"ar",
"ru"
],
"type": "string",
"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."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"chapters",
"provenance",
"attribution"
],
"properties": {
"chapters": {
"type": "array",
"items": {
"type": "object",
"required": [
"number",
"uri",
"code",
"code_range",
"title",
"error"
],
"properties": {
"uri": {
"type": "string"
},
"code": {
"type": [
"string",
"null"
]
},
"error": {
"type": [
"string",
"null"
]
},
"title": {
"type": [
"string",
"null"
]
},
"number": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
"code_range": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
},
"description": "Top-level ICD-11 MMS chapters in WHO order; a chapter the WHO failed to return keeps its number and URI, with error set and the other fields null."
},
"provenance": {
"type": "object",
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"properties": {
"source": {
"type": "string",
"description": "Official upstream source of this data"
},
"derived": {
"type": "boolean",
"description": "Present (true) only when this server computed the value (e.g. a ranking or summary statistics) instead of passing on what the source returned"
},
"license": {
"type": [
"string",
"null"
],
"description": "License / legal regime of the data"
},
"notices": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Caveats the source publishes about the data, verbatim (license statements are not repeated here; see the info://licenses resource). Absent when there is none"
},
"citation": {
"type": "string",
"description": "Ready-to-use citation/attribution string"
},
"revision": {
"type": "object",
"required": [
"status",
"note"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"description": "O específico da fonte: o que revisa, quando, por quê"
},
"status": {
"enum": [
"current",
"provisional",
"final"
],
"type": "string",
"description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte"
}
},
"description": "Whether the data can still change at the source: current = the version in force, the source may revise it; provisional = preliminary; final = will not change. Absent when unknown",
"additionalProperties": false
},
"retrieval": {
"anyOf": [
{
"type": "object",
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"properties": {
"attempts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Tentativas somadas, incluindo as repetidas (>= requests)"
},
"requests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)"
},
"unstable": {
"type": "boolean",
"description": "true se houve repetição (attempts > requests) ou alguma anomalia"
},
"anomalies": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"count"
],
"properties": {
"kind": {
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string",
"description": "Classe da anomalia (vocabulário fechado do contrato)"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Ocorrências desta classe na chamada"
}
},
"additionalProperties": false
},
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Origin diagnostics of THIS source in this call: 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)"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the source (API base or dataset release)"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Version/release of the data as exposed by the source; null when not exposed"
},
"retrieved_at": {
"type": "string",
"description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant."
},
"field_sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"fields",
"source_url",
"dataset_id",
"data_vintage",
"retrieved_at"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Campos do payload atribuídos a esta sub-fonte"
},
"dataset_id": {
"type": [
"string",
"null"
],
"description": "Identificador do conjunto da sub-fonte"
},
"source_url": {
"type": "string",
"description": "URL canônica da sub-fonte que originou estes campos"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Vintage/competência da sub-fonte"
},
"retrieved_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 da extração desta sub-fonte na origem"
},
"served_from_cache": {
"type": [
"boolean",
"null"
],
"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"
}
},
"description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
"additionalProperties": false
},
"minItems": 1,
"description": "Present only when the response joins parts from different origins or extraction instants: for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses"
},
"derivation_note": {
"type": "string",
"description": "What this server computed; present together with derived"
}
},
"description": "Provenance block: source, URL, data vintage, extraction instant, origin diagnostics, citation, license",
"additionalProperties": false
},
"attribution": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical source URLs of this response (attribution list)"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}icd11_postcoordination — ICD-11 Postcoordination Options
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.
{
"type": "object",
"required": [
"code"
],
"properties": {
"code": {
"type": "string",
"minLength": 1,
"description": "ICD-11 code to get postcoordination info for"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"code",
"axes",
"provenance",
"attribution"
],
"properties": {
"axes": {
"type": "array",
"items": {
"type": "object",
"required": [
"axis_name",
"required",
"allow_multiple",
"value_count"
],
"properties": {
"required": {
"type": "boolean"
},
"axis_name": {
"type": "string"
},
"value_count": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
]
},
"allow_multiple": {
"type": "boolean"
}
},
"additionalProperties": false
},
"description": "Postcoordination axes the WHO allows for this code; empty when it has none or the WHO has no postcoordination info for it."
},
"code": {
"type": "string",
"description": "The ICD-11 code as submitted."
},
"provenance": {
"type": "object",
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"properties": {
"source": {
"type": "string",
"description": "Official upstream source of this data"
},
"derived": {
"type": "boolean",
"description": "Present (true) only when this server computed the value (e.g. a ranking or summary statistics) instead of passing on what the source returned"
},
"license": {
"type": [
"string",
"null"
],
"description": "License / legal regime of the data"
},
"notices": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Caveats the source publishes about the data, verbatim (license statements are not repeated here; see the info://licenses resource). Absent when there is none"
},
"citation": {
"type": "string",
"description": "Ready-to-use citation/attribution string"
},
"revision": {
"type": "object",
"required": [
"status",
"note"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"description": "O específico da fonte: o que revisa, quando, por quê"
},
"status": {
"enum": [
"current",
"provisional",
"final"
],
"type": "string",
"description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte"
}
},
"description": "Whether the data can still change at the source: current = the version in force, the source may revise it; provisional = preliminary; final = will not change. Absent when unknown",
"additionalProperties": false
},
"retrieval": {
"anyOf": [
{
"type": "object",
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"properties": {
"attempts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Tentativas somadas, incluindo as repetidas (>= requests)"
},
"requests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)"
},
"unstable": {
"type": "boolean",
"description": "true se houve repetição (attempts > requests) ou alguma anomalia"
},
"anomalies": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"count"
],
"properties": {
"kind": {
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string",
"description": "Classe da anomalia (vocabulário fechado do contrato)"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Ocorrências desta classe na chamada"
}
},
"additionalProperties": false
},
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Origin diagnostics of THIS source in this call: 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)"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the source (API base or dataset release)"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Version/release of the data as exposed by the source; null when not exposed"
},
"retrieved_at": {
"type": "string",
"description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant."
},
"field_sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"fields",
"source_url",
"dataset_id",
"data_vintage",
"retrieved_at"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Campos do payload atribuídos a esta sub-fonte"
},
"dataset_id": {
"type": [
"string",
"null"
],
"description": "Identificador do conjunto da sub-fonte"
},
"source_url": {
"type": "string",
"description": "URL canônica da sub-fonte que originou estes campos"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Vintage/competência da sub-fonte"
},
"retrieved_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 da extração desta sub-fonte na origem"
},
"served_from_cache": {
"type": [
"boolean",
"null"
],
"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"
}
},
"description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
"additionalProperties": false
},
"minItems": 1,
"description": "Present only when the response joins parts from different origins or extraction instants: for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses"
},
"derivation_note": {
"type": "string",
"description": "What this server computed; present together with derived"
}
},
"description": "Provenance block: source, URL, data vintage, extraction instant, origin diagnostics, citation, license",
"additionalProperties": false
},
"attribution": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical source URLs of this response (attribution list)"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}loinc_search — Search LOINC
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.
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"minLength": 1,
"description": "Search term (test name, keyword, or partial LOINC code)"
},
"max_results": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "Maximum number of results (1-100). Default: 25"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"query",
"total_count",
"shown_count",
"items",
"provenance",
"attribution"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"loinc_num",
"long_common_name",
"short_name",
"component",
"property",
"time_aspect",
"system",
"scale_type",
"method_type",
"class",
"status",
"external_copyright_notice"
],
"properties": {
"class": {
"type": "string",
"description": "LOINC class the term is grouped under (e.g. \"CHEM\")."
},
"status": {
"type": "string",
"description": "LOINC term status (e.g. \"ACTIVE\", \"DEPRECATED\"); empty when the source omits it."
},
"system": {
"type": "string",
"description": "LOINC axis 4, System: the specimen or thing observed (e.g. \"Bld\", \"Ser/Plas\")."
},
"property": {
"type": "string",
"description": "LOINC axis 2, Property: the kind of quantity (e.g. \"MCnc\" = mass concentration)."
},
"component": {
"type": "string",
"description": "LOINC axis 1, Component: what is measured or observed (e.g. \"Glucose\")."
},
"loinc_num": {
"type": "string",
"description": "LOINC number (e.g. \"2339-0\")."
},
"scale_type": {
"type": "string",
"description": "LOINC axis 5, Scale: Qn (quantitative), Ord, Nom, Nar, etc."
},
"short_name": {
"type": "string",
"description": "LOINC short name; empty when the source has none."
},
"method_type": {
"type": "string",
"description": "LOINC axis 6, Method; empty when the term specifies none."
},
"time_aspect": {
"type": "string",
"description": "LOINC axis 3, Time: point in time or interval of the observation (e.g. \"Pt\", \"24H\")."
},
"long_common_name": {
"type": "string",
"description": "LOINC Long Common Name, the full human-readable name of the term."
},
"external_copyright_notice": {
"type": [
"string",
"null"
],
"description": "Third-party copyright notice the term carries, served verbatim (LOINC License §10); null when it carries none."
}
},
"additionalProperties": false
},
"description": "Matching LOINC terms in source relevance order."
},
"query": {
"type": "string",
"description": "The search term as submitted."
},
"provenance": {
"type": "object",
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"properties": {
"source": {
"type": "string",
"description": "Official upstream source of this data"
},
"derived": {
"type": "boolean",
"description": "Present (true) only when this server computed the value (e.g. a ranking or summary statistics) instead of passing on what the source returned"
},
"license": {
"type": [
"string",
"null"
],
"description": "License / legal regime of the data"
},
"notices": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Caveats the source publishes about the data, verbatim (license statements are not repeated here; see the info://licenses resource). Absent when there is none"
},
"citation": {
"type": "string",
"description": "Ready-to-use citation/attribution string"
},
"revision": {
"type": "object",
"required": [
"status",
"note"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"description": "O específico da fonte: o que revisa, quando, por quê"
},
"status": {
"enum": [
"current",
"provisional",
"final"
],
"type": "string",
"description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte"
}
},
"description": "Whether the data can still change at the source: current = the version in force, the source may revise it; provisional = preliminary; final = will not change. Absent when unknown",
"additionalProperties": false
},
"retrieval": {
"anyOf": [
{
"type": "object",
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"properties": {
"attempts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Tentativas somadas, incluindo as repetidas (>= requests)"
},
"requests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)"
},
"unstable": {
"type": "boolean",
"description": "true se houve repetição (attempts > requests) ou alguma anomalia"
},
"anomalies": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"count"
],
"properties": {
"kind": {
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string",
"description": "Classe da anomalia (vocabulário fechado do contrato)"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Ocorrências desta classe na chamada"
}
},
"additionalProperties": false
},
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Origin diagnostics of THIS source in this call: 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)"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the source (API base or dataset release)"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Version/release of the data as exposed by the source; null when not exposed"
},
"retrieved_at": {
"type": "string",
"description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant."
},
"field_sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"fields",
"source_url",
"dataset_id",
"data_vintage",
"retrieved_at"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Campos do payload atribuídos a esta sub-fonte"
},
"dataset_id": {
"type": [
"string",
"null"
],
"description": "Identificador do conjunto da sub-fonte"
},
"source_url": {
"type": "string",
"description": "URL canônica da sub-fonte que originou estes campos"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Vintage/competência da sub-fonte"
},
"retrieved_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 da extração desta sub-fonte na origem"
},
"served_from_cache": {
"type": [
"boolean",
"null"
],
"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"
}
},
"description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
"additionalProperties": false
},
"minItems": 1,
"description": "Present only when the response joins parts from different origins or extraction instants: for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses"
},
"derivation_note": {
"type": "string",
"description": "What this server computed; present together with derived"
}
},
"description": "Provenance block: source, URL, data vintage, extraction instant, origin diagnostics, citation, license",
"additionalProperties": false
},
"attribution": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical source URLs of this response (attribution list)"
},
"shown_count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Number of terms returned in items (at most max_results)."
},
"total_count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Total number of LOINC terms matching the query at the source, which may exceed the items returned."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}loinc_details — LOINC Code Details
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).
{
"type": "object",
"required": [
"loinc_num"
],
"properties": {
"loinc_num": {
"type": "string",
"pattern": "^\\d{1,5}-\\d$",
"description": "LOINC number (e.g., \"2339-0\")"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"loinc_num",
"long_common_name",
"short_name",
"component",
"property",
"time_aspect",
"system",
"scale_type",
"method_type",
"class",
"status",
"external_copyright_notice",
"provenance",
"attribution"
],
"properties": {
"class": {
"type": "string",
"description": "LOINC class the term is grouped under (e.g. \"CHEM\")."
},
"status": {
"type": "string",
"description": "LOINC term status (e.g. \"ACTIVE\", \"DEPRECATED\"); empty when the source omits it."
},
"system": {
"type": "string",
"description": "LOINC axis 4, System: the specimen or thing observed (e.g. \"Bld\", \"Ser/Plas\")."
},
"property": {
"type": "string",
"description": "LOINC axis 2, Property: the kind of quantity (e.g. \"MCnc\" = mass concentration)."
},
"component": {
"type": "string",
"description": "LOINC axis 1, Component: what is measured or observed (e.g. \"Glucose\")."
},
"loinc_num": {
"type": "string",
"description": "LOINC number (e.g. \"2339-0\")."
},
"provenance": {
"type": "object",
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"properties": {
"source": {
"type": "string",
"description": "Official upstream source of this data"
},
"derived": {
"type": "boolean",
"description": "Present (true) only when this server computed the value (e.g. a ranking or summary statistics) instead of passing on what the source returned"
},
"license": {
"type": [
"string",
"null"
],
"description": "License / legal regime of the data"
},
"notices": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Caveats the source publishes about the data, verbatim (license statements are not repeated here; see the info://licenses resource). Absent when there is none"
},
"citation": {
"type": "string",
"description": "Ready-to-use citation/attribution string"
},
"revision": {
"type": "object",
"required": [
"status",
"note"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"description": "O específico da fonte: o que revisa, quando, por quê"
},
"status": {
"enum": [
"current",
"provisional",
"final"
],
"type": "string",
"description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte"
}
},
"description": "Whether the data can still change at the source: current = the version in force, the source may revise it; provisional = preliminary; final = will not change. Absent when unknown",
"additionalProperties": false
},
"retrieval": {
"anyOf": [
{
"type": "object",
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"properties": {
"attempts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Tentativas somadas, incluindo as repetidas (>= requests)"
},
"requests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)"
},
"unstable": {
"type": "boolean",
"description": "true se houve repetição (attempts > requests) ou alguma anomalia"
},
"anomalies": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"count"
],
"properties": {
"kind": {
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string",
"description": "Classe da anomalia (vocabulário fechado do contrato)"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Ocorrências desta classe na chamada"
}
},
"additionalProperties": false
},
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Origin diagnostics of THIS source in this call: 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)"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the source (API base or dataset release)"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Version/release of the data as exposed by the source; null when not exposed"
},
"retrieved_at": {
"type": "string",
"description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant."
},
"field_sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"fields",
"source_url",
"dataset_id",
"data_vintage",
"retrieved_at"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Campos do payload atribuídos a esta sub-fonte"
},
"dataset_id": {
"type": [
"string",
"null"
],
"description": "Identificador do conjunto da sub-fonte"
},
"source_url": {
"type": "string",
"description": "URL canônica da sub-fonte que originou estes campos"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Vintage/competência da sub-fonte"
},
"retrieved_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 da extração desta sub-fonte na origem"
},
"served_from_cache": {
"type": [
"boolean",
"null"
],
"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"
}
},
"description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
"additionalProperties": false
},
"minItems": 1,
"description": "Present only when the response joins parts from different origins or extraction instants: for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses"
},
"derivation_note": {
"type": "string",
"description": "What this server computed; present together with derived"
}
},
"description": "Provenance block: source, URL, data vintage, extraction instant, origin diagnostics, citation, license",
"additionalProperties": false
},
"scale_type": {
"type": "string",
"description": "LOINC axis 5, Scale: Qn (quantitative), Ord, Nom, Nar, etc."
},
"short_name": {
"type": "string",
"description": "LOINC short name; empty when the source has none."
},
"attribution": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical source URLs of this response (attribution list)"
},
"method_type": {
"type": "string",
"description": "LOINC axis 6, Method; empty when the term specifies none."
},
"time_aspect": {
"type": "string",
"description": "LOINC axis 3, Time: point in time or interval of the observation (e.g. \"Pt\", \"24H\")."
},
"long_common_name": {
"type": "string",
"description": "LOINC Long Common Name, the full human-readable name of the term."
},
"external_copyright_notice": {
"type": [
"string",
"null"
],
"description": "Third-party copyright notice the term carries, served verbatim (LOINC License §10); null when it carries none."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}loinc_answers — LOINC Answer Lists
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.
{
"type": "object",
"required": [
"loinc_num"
],
"properties": {
"loinc_num": {
"type": "string",
"pattern": "^\\d{1,5}-\\d$",
"description": "LOINC number (e.g., \"2339-0\")"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"loinc_num",
"answers",
"provenance",
"attribution"
],
"properties": {
"answers": {
"type": "array",
"items": {
"type": "object",
"required": [
"sequence",
"answer_code",
"answer_string",
"score"
],
"properties": {
"score": {
"type": [
"number",
"null"
],
"description": "Numeric score for scored instruments (PHQ-9 items: 0-3); null when the answer list carries none."
},
"sequence": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Display order in the answer list (1-based)."
},
"answer_code": {
"type": "string",
"description": "LOINC answer code (LA…), e.g. \"LA18976-3\"."
},
"answer_string": {
"type": "string"
}
},
"additionalProperties": false
},
"description": "Answer list of the question in display order; empty when the code exists but has no answer list."
},
"loinc_num": {
"type": "string",
"description": "The LOINC number as submitted."
},
"provenance": {
"type": "object",
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"properties": {
"source": {
"type": "string",
"description": "Official upstream source of this data"
},
"derived": {
"type": "boolean",
"description": "Present (true) only when this server computed the value (e.g. a ranking or summary statistics) instead of passing on what the source returned"
},
"license": {
"type": [
"string",
"null"
],
"description": "License / legal regime of the data"
},
"notices": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Caveats the source publishes about the data, verbatim (license statements are not repeated here; see the info://licenses resource). Absent when there is none"
},
"citation": {
"type": "string",
"description": "Ready-to-use citation/attribution string"
},
"revision": {
"type": "object",
"required": [
"status",
"note"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"description": "O específico da fonte: o que revisa, quando, por quê"
},
"status": {
"enum": [
"current",
"provisional",
"final"
],
"type": "string",
"description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte"
}
},
"description": "Whether the data can still change at the source: current = the version in force, the source may revise it; provisional = preliminary; final = will not change. Absent when unknown",
"additionalProperties": false
},
"retrieval": {
"anyOf": [
{
"type": "object",
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"properties": {
"attempts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Tentativas somadas, incluindo as repetidas (>= requests)"
},
"requests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)"
},
"unstable": {
"type": "boolean",
"description": "true se houve repetição (attempts > requests) ou alguma anomalia"
},
"anomalies": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"count"
],
"properties": {
"kind": {
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string",
"description": "Classe da anomalia (vocabulário fechado do contrato)"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Ocorrências desta classe na chamada"
}
},
"additionalProperties": false
},
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Origin diagnostics of THIS source in this call: 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)"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the source (API base or dataset release)"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Version/release of the data as exposed by the source; null when not exposed"
},
"retrieved_at": {
"type": "string",
"description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant."
},
"field_sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"fields",
"source_url",
"dataset_id",
"data_vintage",
"retrieved_at"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Campos do payload atribuídos a esta sub-fonte"
},
"dataset_id": {
"type": [
"string",
"null"
],
"description": "Identificador do conjunto da sub-fonte"
},
"source_url": {
"type": "string",
"description": "URL canônica da sub-fonte que originou estes campos"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Vintage/competência da sub-fonte"
},
"retrieved_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 da extração desta sub-fonte na origem"
},
"served_from_cache": {
"type": [
"boolean",
"null"
],
"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"
}
},
"description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
"additionalProperties": false
},
"minItems": 1,
"description": "Present only when the response joins parts from different origins or extraction instants: for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses"
},
"derivation_note": {
"type": "string",
"description": "What this server computed; present together with derived"
}
},
"description": "Provenance block: source, URL, data vintage, extraction instant, origin diagnostics, citation, license",
"additionalProperties": false
},
"attribution": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical source URLs of this response (attribution list)"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}loinc_panels — LOINC Panel Structure
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.
{
"type": "object",
"required": [
"loinc_num"
],
"properties": {
"loinc_num": {
"type": "string",
"pattern": "^\\d{1,5}-\\d$",
"description": "LOINC number (e.g., \"2339-0\")"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"loinc_num",
"panel",
"provenance",
"attribution"
],
"properties": {
"panel": {
"anyOf": [
{
"type": "object",
"required": [
"loinc_num",
"name",
"items"
],
"properties": {
"name": {
"type": "string"
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"sequence",
"loinc_num",
"name",
"required"
],
"properties": {
"name": {
"type": "string"
},
"required": {
"type": [
"boolean",
"null"
],
"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)."
},
"sequence": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Position in the form (1-based), i.e. display order."
},
"loinc_num": {
"type": "string"
}
},
"additionalProperties": false
}
},
"loinc_num": {
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Panel/form definition with its member items; null when no panel structure is found for the code (not a panel, or no definition available)."
},
"loinc_num": {
"type": "string",
"description": "The LOINC number as submitted."
},
"provenance": {
"type": "object",
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"properties": {
"source": {
"type": "string",
"description": "Official upstream source of this data"
},
"derived": {
"type": "boolean",
"description": "Present (true) only when this server computed the value (e.g. a ranking or summary statistics) instead of passing on what the source returned"
},
"license": {
"type": [
"string",
"null"
],
"description": "License / legal regime of the data"
},
"notices": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Caveats the source publishes about the data, verbatim (license statements are not repeated here; see the info://licenses resource). Absent when there is none"
},
"citation": {
"type": "string",
"description": "Ready-to-use citation/attribution string"
},
"revision": {
"type": "object",
"required": [
"status",
"note"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"description": "O específico da fonte: o que revisa, quando, por quê"
},
"status": {
"enum": [
"current",
"provisional",
"final"
],
"type": "string",
"description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte"
}
},
"description": "Whether the data can still change at the source: current = the version in force, the source may revise it; provisional = preliminary; final = will not change. Absent when unknown",
"additionalProperties": false
},
"retrieval": {
"anyOf": [
{
"type": "object",
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"properties": {
"attempts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Tentativas somadas, incluindo as repetidas (>= requests)"
},
"requests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)"
},
"unstable": {
"type": "boolean",
"description": "true se houve repetição (attempts > requests) ou alguma anomalia"
},
"anomalies": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"count"
],
"properties": {
"kind": {
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string",
"description": "Classe da anomalia (vocabulário fechado do contrato)"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Ocorrências desta classe na chamada"
}
},
"additionalProperties": false
},
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Origin diagnostics of THIS source in this call: 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)"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the source (API base or dataset release)"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Version/release of the data as exposed by the source; null when not exposed"
},
"retrieved_at": {
"type": "string",
"description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant."
},
"field_sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"fields",
"source_url",
"dataset_id",
"data_vintage",
"retrieved_at"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Campos do payload atribuídos a esta sub-fonte"
},
"dataset_id": {
"type": [
"string",
"null"
],
"description": "Identificador do conjunto da sub-fonte"
},
"source_url": {
"type": "string",
"description": "URL canônica da sub-fonte que originou estes campos"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Vintage/competência da sub-fonte"
},
"retrieved_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 da extração desta sub-fonte na origem"
},
"served_from_cache": {
"type": [
"boolean",
"null"
],
"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"
}
},
"description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
"additionalProperties": false
},
"minItems": 1,
"description": "Present only when the response joins parts from different origins or extraction instants: for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses"
},
"derivation_note": {
"type": "string",
"description": "What this server computed; present together with derived"
}
},
"description": "Provenance block: source, URL, data vintage, extraction instant, origin diagnostics, citation, license",
"additionalProperties": false
},
"attribution": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical source URLs of this response (attribution list)"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}rxnorm_search — Search RxNorm Drugs
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.
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"minLength": 1,
"description": "Drug name to search (brand or generic)"
},
"max_results": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "Maximum number of results (1-100). Default: 25"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"query",
"total_count",
"drugs",
"provenance",
"attribution"
],
"properties": {
"drugs": {
"type": "array",
"items": {
"type": "object",
"required": [
"rxcui",
"name",
"synonym",
"tty",
"language"
],
"properties": {
"tty": {
"type": "string"
},
"name": {
"type": "string"
},
"rxcui": {
"type": "string"
},
"synonym": {
"type": "string"
},
"language": {
"type": "string"
}
},
"additionalProperties": false
},
"description": "Matching RxNorm concepts, at most max_results. tty \"APPROX\" marks results of the approximate-match fallback, used when the name matched nothing exactly."
},
"query": {
"type": "string",
"description": "The drug name as submitted."
},
"provenance": {
"type": "object",
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"properties": {
"source": {
"type": "string",
"description": "Official upstream source of this data"
},
"derived": {
"type": "boolean",
"description": "Present (true) only when this server computed the value (e.g. a ranking or summary statistics) instead of passing on what the source returned"
},
"license": {
"type": [
"string",
"null"
],
"description": "License / legal regime of the data"
},
"notices": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Caveats the source publishes about the data, verbatim (license statements are not repeated here; see the info://licenses resource). Absent when there is none"
},
"citation": {
"type": "string",
"description": "Ready-to-use citation/attribution string"
},
"revision": {
"type": "object",
"required": [
"status",
"note"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"description": "O específico da fonte: o que revisa, quando, por quê"
},
"status": {
"enum": [
"current",
"provisional",
"final"
],
"type": "string",
"description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte"
}
},
"description": "Whether the data can still change at the source: current = the version in force, the source may revise it; provisional = preliminary; final = will not change. Absent when unknown",
"additionalProperties": false
},
"retrieval": {
"anyOf": [
{
"type": "object",
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"properties": {
"attempts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Tentativas somadas, incluindo as repetidas (>= requests)"
},
"requests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)"
},
"unstable": {
"type": "boolean",
"description": "true se houve repetição (attempts > requests) ou alguma anomalia"
},
"anomalies": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"count"
],
"properties": {
"kind": {
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string",
"description": "Classe da anomalia (vocabulário fechado do contrato)"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Ocorrências desta classe na chamada"
}
},
"additionalProperties": false
},
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Origin diagnostics of THIS source in this call: 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)"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the source (API base or dataset release)"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Version/release of the data as exposed by the source; null when not exposed"
},
"retrieved_at": {
"type": "string",
"description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant."
},
"field_sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"fields",
"source_url",
"dataset_id",
"data_vintage",
"retrieved_at"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Campos do payload atribuídos a esta sub-fonte"
},
"dataset_id": {
"type": [
"string",
"null"
],
"description": "Identificador do conjunto da sub-fonte"
},
"source_url": {
"type": "string",
"description": "URL canônica da sub-fonte que originou estes campos"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Vintage/competência da sub-fonte"
},
"retrieved_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 da extração desta sub-fonte na origem"
},
"served_from_cache": {
"type": [
"boolean",
"null"
],
"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"
}
},
"description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
"additionalProperties": false
},
"minItems": 1,
"description": "Present only when the response joins parts from different origins or extraction instants: for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses"
},
"derivation_note": {
"type": "string",
"description": "What this server computed; present together with derived"
}
},
"description": "Provenance block: source, URL, data vintage, extraction instant, origin diagnostics, citation, license",
"additionalProperties": false
},
"attribution": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical source URLs of this response (attribution list)"
},
"total_count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Number of concepts RxNav returned for the name, before the max_results cap."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}rxnorm_concept — RxNorm Concept Details
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.
{
"type": "object",
"required": [
"rxcui"
],
"properties": {
"rxcui": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d+$"
},
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
],
"description": "RxNorm Concept Unique Identifier (string of digits or integer, e.g. \"161\" or 161)"
},
"include_related": {
"anyOf": [
{
"type": "boolean"
},
{
"enum": [
"true",
"false"
],
"type": "string"
}
],
"description": "Include related concepts (ingredients, brands, dose forms). Default false; true/false, also accepted as the strings \"true\"/\"false\""
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"rxcui",
"found",
"name",
"synonym",
"tty",
"language",
"suppress",
"umlscui",
"status",
"remapped_to",
"related_groups",
"provenance",
"attribution"
],
"properties": {
"tty": {
"type": [
"string",
"null"
],
"description": "RxNorm term type (e.g. \"IN\" ingredient, \"SCD\" clinical drug, \"SBD\" branded drug); null when found=false."
},
"name": {
"type": [
"string",
"null"
],
"description": "RxNorm normalized name of the concept; null when found=false."
},
"found": {
"type": "boolean",
"description": "false when RxNorm has no concept with this RxCUI (the lookup answered; the fields below are null)"
},
"rxcui": {
"type": "string",
"description": "The RxCUI looked up."
},
"status": {
"type": [
"string",
"null"
],
"description": "RxNorm history status (e.g. \"Active\", \"Remapped\", \"Obsolete\"); \"Active\" when RxNav does not report one; null when found=false."
},
"synonym": {
"type": [
"string",
"null"
],
"description": "RxNorm synonym (may be empty); null when found=false."
},
"umlscui": {
"type": [
"string",
"null"
],
"description": "UMLS Concept Unique Identifier linked to the concept (empty when none); null when found=false."
},
"language": {
"type": [
"string",
"null"
],
"description": "Language of the concept name as RxNav reports it (e.g. \"ENG\"); null when found=false."
},
"suppress": {
"type": [
"string",
"null"
],
"description": "RxNorm suppress flag (\"N\" = not suppressed, the default when RxNav omits it); null when found=false."
},
"provenance": {
"type": "object",
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"properties": {
"source": {
"type": "string",
"description": "Official upstream source of this data"
},
"derived": {
"type": "boolean",
"description": "Present (true) only when this server computed the value (e.g. a ranking or summary statistics) instead of passing on what the source returned"
},
"license": {
"type": [
"string",
"null"
],
"description": "License / legal regime of the data"
},
"notices": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Caveats the source publishes about the data, verbatim (license statements are not repeated here; see the info://licenses resource). Absent when there is none"
},
"citation": {
"type": "string",
"description": "Ready-to-use citation/attribution string"
},
"revision": {
"type": "object",
"required": [
"status",
"note"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"description": "O específico da fonte: o que revisa, quando, por quê"
},
"status": {
"enum": [
"current",
"provisional",
"final"
],
"type": "string",
"description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte"
}
},
"description": "Whether the data can still change at the source: current = the version in force, the source may revise it; provisional = preliminary; final = will not change. Absent when unknown",
"additionalProperties": false
},
"retrieval": {
"anyOf": [
{
"type": "object",
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"properties": {
"attempts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Tentativas somadas, incluindo as repetidas (>= requests)"
},
"requests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)"
},
"unstable": {
"type": "boolean",
"description": "true se houve repetição (attempts > requests) ou alguma anomalia"
},
"anomalies": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"count"
],
"properties": {
"kind": {
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string",
"description": "Classe da anomalia (vocabulário fechado do contrato)"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Ocorrências desta classe na chamada"
}
},
"additionalProperties": false
},
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Origin diagnostics of THIS source in this call: 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)"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the source (API base or dataset release)"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Version/release of the data as exposed by the source; null when not exposed"
},
"retrieved_at": {
"type": "string",
"description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant."
},
"field_sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"fields",
"source_url",
"dataset_id",
"data_vintage",
"retrieved_at"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Campos do payload atribuídos a esta sub-fonte"
},
"dataset_id": {
"type": [
"string",
"null"
],
"description": "Identificador do conjunto da sub-fonte"
},
"source_url": {
"type": "string",
"description": "URL canônica da sub-fonte que originou estes campos"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Vintage/competência da sub-fonte"
},
"retrieved_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 da extração desta sub-fonte na origem"
},
"served_from_cache": {
"type": [
"boolean",
"null"
],
"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"
}
},
"description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
"additionalProperties": false
},
"minItems": 1,
"description": "Present only when the response joins parts from different origins or extraction instants: for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses"
},
"derivation_note": {
"type": "string",
"description": "What this server computed; present together with derived"
}
},
"description": "Provenance block: source, URL, data vintage, extraction instant, origin diagnostics, citation, license",
"additionalProperties": false
},
"attribution": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical source URLs of this response (attribution list)"
},
"remapped_to": {
"type": "array",
"items": {
"type": "string"
},
"description": "RxCUIs a remapped concept was replaced by; empty otherwise."
},
"related_groups": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"required": [
"tty",
"concepts"
],
"properties": {
"tty": {
"type": "string"
},
"concepts": {
"type": "array",
"items": {
"type": "object",
"required": [
"rxcui",
"name",
"synonym",
"tty",
"language"
],
"properties": {
"tty": {
"type": "string"
},
"name": {
"type": "string"
},
"rxcui": {
"type": "string"
},
"synonym": {
"type": "string"
},
"language": {
"type": "string"
}
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "Related concepts (ingredients, brands, dose forms) grouped by term type; null unless include_related=true."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}rxnorm_ingredients — RxNorm Drug Ingredients
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.
{
"type": "object",
"required": [
"rxcui"
],
"properties": {
"rxcui": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d+$"
},
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
],
"description": "RxCUI of the drug"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"rxcui",
"ingredients",
"provenance",
"attribution"
],
"properties": {
"rxcui": {
"type": "string",
"description": "The RxCUI as submitted."
},
"provenance": {
"type": "object",
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"properties": {
"source": {
"type": "string",
"description": "Official upstream source of this data"
},
"derived": {
"type": "boolean",
"description": "Present (true) only when this server computed the value (e.g. a ranking or summary statistics) instead of passing on what the source returned"
},
"license": {
"type": [
"string",
"null"
],
"description": "License / legal regime of the data"
},
"notices": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Caveats the source publishes about the data, verbatim (license statements are not repeated here; see the info://licenses resource). Absent when there is none"
},
"citation": {
"type": "string",
"description": "Ready-to-use citation/attribution string"
},
"revision": {
"type": "object",
"required": [
"status",
"note"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"description": "O específico da fonte: o que revisa, quando, por quê"
},
"status": {
"enum": [
"current",
"provisional",
"final"
],
"type": "string",
"description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte"
}
},
"description": "Whether the data can still change at the source: current = the version in force, the source may revise it; provisional = preliminary; final = will not change. Absent when unknown",
"additionalProperties": false
},
"retrieval": {
"anyOf": [
{
"type": "object",
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"properties": {
"attempts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Tentativas somadas, incluindo as repetidas (>= requests)"
},
"requests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)"
},
"unstable": {
"type": "boolean",
"description": "true se houve repetição (attempts > requests) ou alguma anomalia"
},
"anomalies": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"count"
],
"properties": {
"kind": {
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string",
"description": "Classe da anomalia (vocabulário fechado do contrato)"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Ocorrências desta classe na chamada"
}
},
"additionalProperties": false
},
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Origin diagnostics of THIS source in this call: 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)"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the source (API base or dataset release)"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Version/release of the data as exposed by the source; null when not exposed"
},
"retrieved_at": {
"type": "string",
"description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant."
},
"field_sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"fields",
"source_url",
"dataset_id",
"data_vintage",
"retrieved_at"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Campos do payload atribuídos a esta sub-fonte"
},
"dataset_id": {
"type": [
"string",
"null"
],
"description": "Identificador do conjunto da sub-fonte"
},
"source_url": {
"type": "string",
"description": "URL canônica da sub-fonte que originou estes campos"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Vintage/competência da sub-fonte"
},
"retrieved_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 da extração desta sub-fonte na origem"
},
"served_from_cache": {
"type": [
"boolean",
"null"
],
"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"
}
},
"description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
"additionalProperties": false
},
"minItems": 1,
"description": "Present only when the response joins parts from different origins or extraction instants: for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses"
},
"derivation_note": {
"type": "string",
"description": "What this server computed; present together with derived"
}
},
"description": "Provenance block: source, URL, data vintage, extraction instant, origin diagnostics, citation, license",
"additionalProperties": false
},
"attribution": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical source URLs of this response (attribution list)"
},
"ingredients": {
"type": "array",
"items": {
"type": "object",
"required": [
"rxcui",
"name",
"tty",
"is_multiple"
],
"properties": {
"tty": {
"type": "string"
},
"name": {
"type": "string"
},
"rxcui": {
"type": "string"
},
"is_multiple": {
"type": "boolean"
}
},
"additionalProperties": false
},
"description": "Ingredient concepts (term types IN and MIN) RxNav relates to the RxCUI; empty when none."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}rxnorm_classes — RxNorm Drug Classes
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.
{
"type": "object",
"required": [
"rxcui"
],
"properties": {
"rxcui": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d+$"
},
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
],
"description": "RxCUI of the drug"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"rxcui",
"classes",
"provenance",
"attribution"
],
"properties": {
"rxcui": {
"type": "string",
"description": "The RxCUI as submitted."
},
"classes": {
"type": "array",
"items": {
"type": "object",
"required": [
"class_id",
"class_name",
"class_type",
"source"
],
"properties": {
"source": {
"type": "string"
},
"class_id": {
"type": "string"
},
"class_name": {
"type": "string"
},
"class_type": {
"type": "string"
}
},
"additionalProperties": false
},
"description": "Drug classes NLM RxClass links to the RxCUI (one entry per class and relationship); empty when none."
},
"provenance": {
"type": "object",
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"properties": {
"source": {
"type": "string",
"description": "Official upstream source of this data"
},
"derived": {
"type": "boolean",
"description": "Present (true) only when this server computed the value (e.g. a ranking or summary statistics) instead of passing on what the source returned"
},
"license": {
"type": [
"string",
"null"
],
"description": "License / legal regime of the data"
},
"notices": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Caveats the source publishes about the data, verbatim (license statements are not repeated here; see the info://licenses resource). Absent when there is none"
},
"citation": {
"type": "string",
"description": "Ready-to-use citation/attribution string"
},
"revision": {
"type": "object",
"required": [
"status",
"note"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"description": "O específico da fonte: o que revisa, quando, por quê"
},
"status": {
"enum": [
"current",
"provisional",
"final"
],
"type": "string",
"description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte"
}
},
"description": "Whether the data can still change at the source: current = the version in force, the source may revise it; provisional = preliminary; final = will not change. Absent when unknown",
"additionalProperties": false
},
"retrieval": {
"anyOf": [
{
"type": "object",
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"properties": {
"attempts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Tentativas somadas, incluindo as repetidas (>= requests)"
},
"requests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)"
},
"unstable": {
"type": "boolean",
"description": "true se houve repetição (attempts > requests) ou alguma anomalia"
},
"anomalies": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"count"
],
"properties": {
"kind": {
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string",
"description": "Classe da anomalia (vocabulário fechado do contrato)"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Ocorrências desta classe na chamada"
}
},
"additionalProperties": false
},
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Origin diagnostics of THIS source in this call: 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)"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the source (API base or dataset release)"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Version/release of the data as exposed by the source; null when not exposed"
},
"retrieved_at": {
"type": "string",
"description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant."
},
"field_sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"fields",
"source_url",
"dataset_id",
"data_vintage",
"retrieved_at"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Campos do payload atribuídos a esta sub-fonte"
},
"dataset_id": {
"type": [
"string",
"null"
],
"description": "Identificador do conjunto da sub-fonte"
},
"source_url": {
"type": "string",
"description": "URL canônica da sub-fonte que originou estes campos"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Vintage/competência da sub-fonte"
},
"retrieved_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 da extração desta sub-fonte na origem"
},
"served_from_cache": {
"type": [
"boolean",
"null"
],
"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"
}
},
"description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
"additionalProperties": false
},
"minItems": 1,
"description": "Present only when the response joins parts from different origins or extraction instants: for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses"
},
"derivation_note": {
"type": "string",
"description": "What this server computed; present together with derived"
}
},
"description": "Provenance block: source, URL, data vintage, extraction instant, origin diagnostics, citation, license",
"additionalProperties": false
},
"attribution": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical source URLs of this response (attribution list)"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}rxnorm_ndc — RxNorm / NDC Mapping
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.
{
"type": "object",
"properties": {
"ndc": {
"type": "string",
"minLength": 1,
"description": "NDC code to look up RxCUI (alternative to rxcui)"
},
"rxcui": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d+$"
},
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
],
"description": "RxCUI to get NDC codes for"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"query_mode",
"rxcui",
"ndc",
"ndcs",
"provenance",
"attribution"
],
"properties": {
"ndc": {
"type": [
"string",
"null"
],
"description": "rxcui_for_ndc: the NDC as submitted; null in ndcs_for_rxcui mode."
},
"ndcs": {
"type": "array",
"items": {
"type": "object",
"required": [
"ndc"
],
"properties": {
"ndc": {
"type": "string"
}
},
"additionalProperties": false
},
"description": "ndcs_for_rxcui: NDC codes RxNorm lists for the RxCUI (empty when none); always empty in rxcui_for_ndc mode."
},
"rxcui": {
"type": [
"string",
"null"
],
"description": "ndcs_for_rxcui: the RxCUI as submitted. rxcui_for_ndc: the RxCUI the NDC belongs to, or null when RxNorm has none for it."
},
"provenance": {
"type": "object",
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"properties": {
"source": {
"type": "string",
"description": "Official upstream source of this data"
},
"derived": {
"type": "boolean",
"description": "Present (true) only when this server computed the value (e.g. a ranking or summary statistics) instead of passing on what the source returned"
},
"license": {
"type": [
"string",
"null"
],
"description": "License / legal regime of the data"
},
"notices": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Caveats the source publishes about the data, verbatim (license statements are not repeated here; see the info://licenses resource). Absent when there is none"
},
"citation": {
"type": "string",
"description": "Ready-to-use citation/attribution string"
},
"revision": {
"type": "object",
"required": [
"status",
"note"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"description": "O específico da fonte: o que revisa, quando, por quê"
},
"status": {
"enum": [
"current",
"provisional",
"final"
],
"type": "string",
"description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte"
}
},
"description": "Whether the data can still change at the source: current = the version in force, the source may revise it; provisional = preliminary; final = will not change. Absent when unknown",
"additionalProperties": false
},
"retrieval": {
"anyOf": [
{
"type": "object",
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"properties": {
"attempts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Tentativas somadas, incluindo as repetidas (>= requests)"
},
"requests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)"
},
"unstable": {
"type": "boolean",
"description": "true se houve repetição (attempts > requests) ou alguma anomalia"
},
"anomalies": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"count"
],
"properties": {
"kind": {
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string",
"description": "Classe da anomalia (vocabulário fechado do contrato)"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Ocorrências desta classe na chamada"
}
},
"additionalProperties": false
},
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Origin diagnostics of THIS source in this call: 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)"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the source (API base or dataset release)"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Version/release of the data as exposed by the source; null when not exposed"
},
"retrieved_at": {
"type": "string",
"description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant."
},
"field_sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"fields",
"source_url",
"dataset_id",
"data_vintage",
"retrieved_at"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Campos do payload atribuídos a esta sub-fonte"
},
"dataset_id": {
"type": [
"string",
"null"
],
"description": "Identificador do conjunto da sub-fonte"
},
"source_url": {
"type": "string",
"description": "URL canônica da sub-fonte que originou estes campos"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Vintage/competência da sub-fonte"
},
"retrieved_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 da extração desta sub-fonte na origem"
},
"served_from_cache": {
"type": [
"boolean",
"null"
],
"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"
}
},
"description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
"additionalProperties": false
},
"minItems": 1,
"description": "Present only when the response joins parts from different origins or extraction instants: for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses"
},
"derivation_note": {
"type": "string",
"description": "What this server computed; present together with derived"
}
},
"description": "Provenance block: source, URL, data vintage, extraction instant, origin diagnostics, citation, license",
"additionalProperties": false
},
"query_mode": {
"enum": [
"ndcs_for_rxcui",
"rxcui_for_ndc"
],
"type": "string",
"description": "Which lookup ran: ndcs_for_rxcui (rxcui given, list its NDCs) or rxcui_for_ndc (ndc given, find its RxCUI)."
},
"attribution": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical source URLs of this response (attribution list)"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}mesh_search — Search MeSH
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.
{
"type": "object",
"required": [
"query"
],
"properties": {
"match": {
"enum": [
"exact",
"contains",
"startswith"
],
"type": "string",
"default": "contains",
"description": "Match type: exact, contains, or startswith. Default: contains"
},
"query": {
"type": "string",
"minLength": 1,
"description": "Search term (e.g., \"diabetes\", \"heart failure\")"
},
"language": {
"enum": [
"en",
"es",
"pt",
"fr",
"de",
"it",
"zh",
"ja",
"ar",
"ru"
],
"type": "string",
"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."
},
"max_results": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "Maximum number of results (1-100). Default: 25"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"query",
"match",
"total_count",
"descriptors",
"provenance",
"attribution"
],
"properties": {
"match": {
"enum": [
"exact",
"contains",
"startswith"
],
"type": "string",
"description": "Match type applied to descriptor labels."
},
"query": {
"type": "string",
"description": "The search term as submitted."
},
"provenance": {
"type": "object",
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"properties": {
"source": {
"type": "string",
"description": "Official upstream source of this data"
},
"derived": {
"type": "boolean",
"description": "Present (true) only when this server computed the value (e.g. a ranking or summary statistics) instead of passing on what the source returned"
},
"license": {
"type": [
"string",
"null"
],
"description": "License / legal regime of the data"
},
"notices": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Caveats the source publishes about the data, verbatim (license statements are not repeated here; see the info://licenses resource). Absent when there is none"
},
"citation": {
"type": "string",
"description": "Ready-to-use citation/attribution string"
},
"revision": {
"type": "object",
"required": [
"status",
"note"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"description": "O específico da fonte: o que revisa, quando, por quê"
},
"status": {
"enum": [
"current",
"provisional",
"final"
],
"type": "string",
"description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte"
}
},
"description": "Whether the data can still change at the source: current = the version in force, the source may revise it; provisional = preliminary; final = will not change. Absent when unknown",
"additionalProperties": false
},
"retrieval": {
"anyOf": [
{
"type": "object",
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"properties": {
"attempts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Tentativas somadas, incluindo as repetidas (>= requests)"
},
"requests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)"
},
"unstable": {
"type": "boolean",
"description": "true se houve repetição (attempts > requests) ou alguma anomalia"
},
"anomalies": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"count"
],
"properties": {
"kind": {
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string",
"description": "Classe da anomalia (vocabulário fechado do contrato)"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Ocorrências desta classe na chamada"
}
},
"additionalProperties": false
},
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Origin diagnostics of THIS source in this call: 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)"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the source (API base or dataset release)"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Version/release of the data as exposed by the source; null when not exposed"
},
"retrieved_at": {
"type": "string",
"description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant."
},
"field_sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"fields",
"source_url",
"dataset_id",
"data_vintage",
"retrieved_at"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Campos do payload atribuídos a esta sub-fonte"
},
"dataset_id": {
"type": [
"string",
"null"
],
"description": "Identificador do conjunto da sub-fonte"
},
"source_url": {
"type": "string",
"description": "URL canônica da sub-fonte que originou estes campos"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Vintage/competência da sub-fonte"
},
"retrieved_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 da extração desta sub-fonte na origem"
},
"served_from_cache": {
"type": [
"boolean",
"null"
],
"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"
}
},
"description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
"additionalProperties": false
},
"minItems": 1,
"description": "Present only when the response joins parts from different origins or extraction instants: for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses"
},
"derivation_note": {
"type": "string",
"description": "What this server computed; present together with derived"
}
},
"description": "Provenance block: source, URL, data vintage, extraction instant, origin diagnostics, citation, license",
"additionalProperties": false
},
"attribution": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical source URLs of this response (attribution list)"
},
"descriptors": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"uri",
"label"
],
"properties": {
"id": {
"type": "string"
},
"uri": {
"type": "string"
},
"label": {
"type": "string"
}
},
"additionalProperties": false
},
"description": "Matching MeSH descriptors, each with its ID (e.g. \"D003920\"), URI and label."
},
"total_count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Number of descriptors returned (the NLM lookup is capped at max_results, so this is not a total count of all matches)."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}mesh_descriptor — MeSH Descriptor Details
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"`).
{
"type": "object",
"required": [
"mesh_id"
],
"properties": {
"mesh_id": {
"type": "string",
"pattern": "^D\\d+$",
"description": "MeSH Descriptor ID (e.g., D015242, D003920)"
},
"language": {
"enum": [
"en",
"es",
"pt",
"fr",
"de",
"it",
"zh",
"ja",
"ar",
"ru"
],
"type": "string",
"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."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"id",
"uri",
"label",
"scope_note",
"tree_numbers",
"concepts",
"qualifiers",
"provenance",
"attribution"
],
"properties": {
"id": {
"type": "string",
"description": "MeSH descriptor ID (e.g. \"D003920\")."
},
"uri": {
"type": "string",
"description": "NLM MeSH RDF URI of the descriptor."
},
"label": {
"type": "string",
"description": "Descriptor heading, in the requested language when NLM publishes that translation."
},
"concepts": {
"type": "array",
"items": {
"type": "object",
"required": [
"uri",
"label",
"is_preferred",
"terms"
],
"properties": {
"uri": {
"type": "string"
},
"label": {
"type": "string"
},
"terms": {
"type": "array",
"items": {
"type": "string"
}
},
"is_preferred": {
"type": "boolean"
}
},
"additionalProperties": false
},
"description": "The preferred concept with its entry terms (synonyms); non-preferred concepts are not retrieved. Empty when the descriptor names no preferred concept."
},
"provenance": {
"type": "object",
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"properties": {
"source": {
"type": "string",
"description": "Official upstream source of this data"
},
"derived": {
"type": "boolean",
"description": "Present (true) only when this server computed the value (e.g. a ranking or summary statistics) instead of passing on what the source returned"
},
"license": {
"type": [
"string",
"null"
],
"description": "License / legal regime of the data"
},
"notices": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Caveats the source publishes about the data, verbatim (license statements are not repeated here; see the info://licenses resource). Absent when there is none"
},
"citation": {
"type": "string",
"description": "Ready-to-use citation/attribution string"
},
"revision": {
"type": "object",
"required": [
"status",
"note"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"description": "O específico da fonte: o que revisa, quando, por quê"
},
"status": {
"enum": [
"current",
"provisional",
"final"
],
"type": "string",
"description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte"
}
},
"description": "Whether the data can still change at the source: current = the version in force, the source may revise it; provisional = preliminary; final = will not change. Absent when unknown",
"additionalProperties": false
},
"retrieval": {
"anyOf": [
{
"type": "object",
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"properties": {
"attempts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Tentativas somadas, incluindo as repetidas (>= requests)"
},
"requests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)"
},
"unstable": {
"type": "boolean",
"description": "true se houve repetição (attempts > requests) ou alguma anomalia"
},
"anomalies": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"count"
],
"properties": {
"kind": {
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string",
"description": "Classe da anomalia (vocabulário fechado do contrato)"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Ocorrências desta classe na chamada"
}
},
"additionalProperties": false
},
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Origin diagnostics of THIS source in this call: 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)"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the source (API base or dataset release)"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Version/release of the data as exposed by the source; null when not exposed"
},
"retrieved_at": {
"type": "string",
"description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant."
},
"field_sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"fields",
"source_url",
"dataset_id",
"data_vintage",
"retrieved_at"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Campos do payload atribuídos a esta sub-fonte"
},
"dataset_id": {
"type": [
"string",
"null"
],
"description": "Identificador do conjunto da sub-fonte"
},
"source_url": {
"type": "string",
"description": "URL canônica da sub-fonte que originou estes campos"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Vintage/competência da sub-fonte"
},
"retrieved_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 da extração desta sub-fonte na origem"
},
"served_from_cache": {
"type": [
"boolean",
"null"
],
"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"
}
},
"description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
"additionalProperties": false
},
"minItems": 1,
"description": "Present only when the response joins parts from different origins or extraction instants: for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses"
},
"derivation_note": {
"type": "string",
"description": "What this server computed; present together with derived"
}
},
"description": "Provenance block: source, URL, data vintage, extraction instant, origin diagnostics, citation, license",
"additionalProperties": false
},
"qualifiers": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"uri",
"label"
],
"properties": {
"id": {
"type": "string"
},
"uri": {
"type": "string"
},
"label": {
"type": "string"
}
},
"additionalProperties": false
},
"description": "Allowable qualifiers (subheadings) for the descriptor."
},
"scope_note": {
"type": "string",
"description": "Scope note (definition) of the descriptor's preferred concept; empty when it has none."
},
"attribution": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical source URLs of this response (attribution list)"
},
"tree_numbers": {
"type": "array",
"items": {
"type": "object",
"required": [
"tree_number",
"uri"
],
"properties": {
"uri": {
"type": "string"
},
"tree_number": {
"type": "string"
}
},
"additionalProperties": false
},
"description": "Tree numbers placing the descriptor in the MeSH hierarchy (e.g. \"C18.452.394.750\")."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}mesh_tree — MeSH Tree Locations
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).
{
"type": "object",
"required": [
"mesh_id"
],
"properties": {
"mesh_id": {
"type": "string",
"pattern": "^D\\d+$",
"description": "MeSH Descriptor ID (e.g., D015242, D003920)"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"mesh_id",
"tree_numbers",
"provenance",
"attribution"
],
"properties": {
"mesh_id": {
"type": "string",
"description": "The MeSH descriptor ID as submitted."
},
"provenance": {
"type": "object",
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"properties": {
"source": {
"type": "string",
"description": "Official upstream source of this data"
},
"derived": {
"type": "boolean",
"description": "Present (true) only when this server computed the value (e.g. a ranking or summary statistics) instead of passing on what the source returned"
},
"license": {
"type": [
"string",
"null"
],
"description": "License / legal regime of the data"
},
"notices": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Caveats the source publishes about the data, verbatim (license statements are not repeated here; see the info://licenses resource). Absent when there is none"
},
"citation": {
"type": "string",
"description": "Ready-to-use citation/attribution string"
},
"revision": {
"type": "object",
"required": [
"status",
"note"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"description": "O específico da fonte: o que revisa, quando, por quê"
},
"status": {
"enum": [
"current",
"provisional",
"final"
],
"type": "string",
"description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte"
}
},
"description": "Whether the data can still change at the source: current = the version in force, the source may revise it; provisional = preliminary; final = will not change. Absent when unknown",
"additionalProperties": false
},
"retrieval": {
"anyOf": [
{
"type": "object",
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"properties": {
"attempts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Tentativas somadas, incluindo as repetidas (>= requests)"
},
"requests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)"
},
"unstable": {
"type": "boolean",
"description": "true se houve repetição (attempts > requests) ou alguma anomalia"
},
"anomalies": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"count"
],
"properties": {
"kind": {
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string",
"description": "Classe da anomalia (vocabulário fechado do contrato)"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Ocorrências desta classe na chamada"
}
},
"additionalProperties": false
},
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Origin diagnostics of THIS source in this call: 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)"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the source (API base or dataset release)"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Version/release of the data as exposed by the source; null when not exposed"
},
"retrieved_at": {
"type": "string",
"description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant."
},
"field_sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"fields",
"source_url",
"dataset_id",
"data_vintage",
"retrieved_at"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Campos do payload atribuídos a esta sub-fonte"
},
"dataset_id": {
"type": [
"string",
"null"
],
"description": "Identificador do conjunto da sub-fonte"
},
"source_url": {
"type": "string",
"description": "URL canônica da sub-fonte que originou estes campos"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Vintage/competência da sub-fonte"
},
"retrieved_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 da extração desta sub-fonte na origem"
},
"served_from_cache": {
"type": [
"boolean",
"null"
],
"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"
}
},
"description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
"additionalProperties": false
},
"minItems": 1,
"description": "Present only when the response joins parts from different origins or extraction instants: for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses"
},
"derivation_note": {
"type": "string",
"description": "What this server computed; present together with derived"
}
},
"description": "Provenance block: source, URL, data vintage, extraction instant, origin diagnostics, citation, license",
"additionalProperties": false
},
"attribution": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical source URLs of this response (attribution list)"
},
"tree_numbers": {
"type": "array",
"items": {
"type": "object",
"required": [
"tree_number",
"uri"
],
"properties": {
"uri": {
"type": "string"
},
"tree_number": {
"type": "string"
}
},
"additionalProperties": false
},
"description": "Tree numbers placing the descriptor in the MeSH hierarchy; a descriptor can sit in several branches."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}mesh_qualifiers — MeSH Allowable Qualifiers
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").
{
"type": "object",
"required": [
"mesh_id"
],
"properties": {
"mesh_id": {
"type": "string",
"pattern": "^D\\d+$",
"description": "MeSH Descriptor ID (e.g., D015242, D003920)"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"mesh_id",
"qualifiers",
"provenance",
"attribution"
],
"properties": {
"mesh_id": {
"type": "string",
"description": "The MeSH descriptor ID as submitted."
},
"provenance": {
"type": "object",
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"properties": {
"source": {
"type": "string",
"description": "Official upstream source of this data"
},
"derived": {
"type": "boolean",
"description": "Present (true) only when this server computed the value (e.g. a ranking or summary statistics) instead of passing on what the source returned"
},
"license": {
"type": [
"string",
"null"
],
"description": "License / legal regime of the data"
},
"notices": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Caveats the source publishes about the data, verbatim (license statements are not repeated here; see the info://licenses resource). Absent when there is none"
},
"citation": {
"type": "string",
"description": "Ready-to-use citation/attribution string"
},
"revision": {
"type": "object",
"required": [
"status",
"note"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"description": "O específico da fonte: o que revisa, quando, por quê"
},
"status": {
"enum": [
"current",
"provisional",
"final"
],
"type": "string",
"description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte"
}
},
"description": "Whether the data can still change at the source: current = the version in force, the source may revise it; provisional = preliminary; final = will not change. Absent when unknown",
"additionalProperties": false
},
"retrieval": {
"anyOf": [
{
"type": "object",
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"properties": {
"attempts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Tentativas somadas, incluindo as repetidas (>= requests)"
},
"requests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)"
},
"unstable": {
"type": "boolean",
"description": "true se houve repetição (attempts > requests) ou alguma anomalia"
},
"anomalies": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"count"
],
"properties": {
"kind": {
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string",
"description": "Classe da anomalia (vocabulário fechado do contrato)"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Ocorrências desta classe na chamada"
}
},
"additionalProperties": false
},
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Origin diagnostics of THIS source in this call: 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)"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the source (API base or dataset release)"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Version/release of the data as exposed by the source; null when not exposed"
},
"retrieved_at": {
"type": "string",
"description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant."
},
"field_sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"fields",
"source_url",
"dataset_id",
"data_vintage",
"retrieved_at"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Campos do payload atribuídos a esta sub-fonte"
},
"dataset_id": {
"type": [
"string",
"null"
],
"description": "Identificador do conjunto da sub-fonte"
},
"source_url": {
"type": "string",
"description": "URL canônica da sub-fonte que originou estes campos"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Vintage/competência da sub-fonte"
},
"retrieved_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 da extração desta sub-fonte na origem"
},
"served_from_cache": {
"type": [
"boolean",
"null"
],
"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"
}
},
"description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
"additionalProperties": false
},
"minItems": 1,
"description": "Present only when the response joins parts from different origins or extraction instants: for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses"
},
"derivation_note": {
"type": "string",
"description": "What this server computed; present together with derived"
}
},
"description": "Provenance block: source, URL, data vintage, extraction instant, origin diagnostics, citation, license",
"additionalProperties": false
},
"qualifiers": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"uri",
"label"
],
"properties": {
"id": {
"type": "string"
},
"uri": {
"type": "string"
},
"label": {
"type": "string"
}
},
"additionalProperties": false
},
"description": "Allowable qualifiers (subheadings) for the descriptor, each with its ID, URI and label."
},
"attribution": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical source URLs of this response (attribution list)"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}map_icd10_to_icd11 — Map ICD-10 to ICD-11
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.
{
"type": "object",
"required": [
"icd10_code"
],
"properties": {
"icd10_code": {
"type": "string",
"minLength": 1,
"description": "ICD-10 code to query in the ICD-11 search index (e.g., E11, I21.0, J18.9)"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"query",
"found",
"icd10",
"primary",
"alternatives",
"source",
"provenance",
"attribution"
],
"properties": {
"found": {
"type": "boolean",
"description": "Whether the code is in the WHO ICD-10 → ICD-11 transition table."
},
"icd10": {
"anyOf": [
{
"type": "object",
"required": [
"code",
"title",
"chapter",
"depth"
],
"properties": {
"code": {
"type": "string"
},
"depth": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
"title": {
"type": "string"
},
"chapter": {
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Source ICD-10 entry from the WHO table. Null when found=false."
},
"query": {
"type": "string",
"description": "The ICD-10 code as submitted (raw, before normalization)."
},
"source": {
"type": "object",
"required": [
"publisher",
"version",
"release_date"
],
"properties": {
"version": {
"type": "string",
"description": "Transition table release identifier (e.g. \"2025-01\")."
},
"publisher": {
"type": "string",
"description": "Authoritative publisher (e.g. \"WHO\")."
},
"release_date": {
"type": "string",
"description": "ISO date string for the release."
}
},
"description": "The bundled WHO ICD-10 → ICD-11 transition table release this answer comes from.",
"additionalProperties": false
},
"primary": {
"anyOf": [
{
"type": "object",
"required": [
"code",
"title",
"chapter",
"foundationUri",
"linearizationUri",
"classKind",
"depth"
],
"properties": {
"code": {
"type": "string"
},
"depth": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
"title": {
"type": "string"
},
"chapter": {
"type": "string"
},
"classKind": {
"type": "string"
},
"foundationUri": {
"type": "string"
},
"linearizationUri": {
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Primary 1:1 ICD-11 mapping. Null when found=false."
},
"provenance": {
"type": "object",
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"properties": {
"source": {
"type": "string",
"description": "Official upstream source of this data"
},
"derived": {
"type": "boolean",
"description": "Present (true) only when this server computed the value (e.g. a ranking or summary statistics) instead of passing on what the source returned"
},
"license": {
"type": [
"string",
"null"
],
"description": "License / legal regime of the data"
},
"notices": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Caveats the source publishes about the data, verbatim (license statements are not repeated here; see the info://licenses resource). Absent when there is none"
},
"citation": {
"type": "string",
"description": "Ready-to-use citation/attribution string"
},
"revision": {
"type": "object",
"required": [
"status",
"note"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"description": "O específico da fonte: o que revisa, quando, por quê"
},
"status": {
"enum": [
"current",
"provisional",
"final"
],
"type": "string",
"description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte"
}
},
"description": "Whether the data can still change at the source: current = the version in force, the source may revise it; provisional = preliminary; final = will not change. Absent when unknown",
"additionalProperties": false
},
"retrieval": {
"anyOf": [
{
"type": "object",
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"properties": {
"attempts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Tentativas somadas, incluindo as repetidas (>= requests)"
},
"requests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)"
},
"unstable": {
"type": "boolean",
"description": "true se houve repetição (attempts > requests) ou alguma anomalia"
},
"anomalies": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"count"
],
"properties": {
"kind": {
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string",
"description": "Classe da anomalia (vocabulário fechado do contrato)"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Ocorrências desta classe na chamada"
}
},
"additionalProperties": false
},
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Origin diagnostics of THIS source in this call: 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)"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the source (API base or dataset release)"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Version/release of the data as exposed by the source; null when not exposed"
},
"retrieved_at": {
"type": "string",
"description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant."
},
"field_sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"fields",
"source_url",
"dataset_id",
"data_vintage",
"retrieved_at"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Campos do payload atribuídos a esta sub-fonte"
},
"dataset_id": {
"type": [
"string",
"null"
],
"description": "Identificador do conjunto da sub-fonte"
},
"source_url": {
"type": "string",
"description": "URL canônica da sub-fonte que originou estes campos"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Vintage/competência da sub-fonte"
},
"retrieved_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 da extração desta sub-fonte na origem"
},
"served_from_cache": {
"type": [
"boolean",
"null"
],
"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"
}
},
"description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
"additionalProperties": false
},
"minItems": 1,
"description": "Present only when the response joins parts from different origins or extraction instants: for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses"
},
"derivation_note": {
"type": "string",
"description": "What this server computed; present together with derived"
}
},
"description": "Provenance block: source, URL, data vintage, extraction instant, origin diagnostics, citation, license",
"additionalProperties": false
},
"attribution": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical source URLs of this response (attribution list)"
},
"alternatives": {
"type": "array",
"items": {
"type": "object",
"required": [
"code",
"title",
"chapter",
"foundationUri",
"linearizationUri",
"classKind",
"depth"
],
"properties": {
"code": {
"type": "string"
},
"depth": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
"title": {
"type": "string"
},
"chapter": {
"type": "string"
},
"classKind": {
"type": "string"
},
"foundationUri": {
"type": "string"
},
"linearizationUri": {
"type": "string"
}
},
"additionalProperties": false
},
"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."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}validate_codes — Validate Medical Codes
Validate a mixed batch of medical codes against their source terminologies. Useful for retrospective analysis of legacy databases — flag codes that no longer exist, surface ICD-10 → ICD-11 replacements, and grade activity status where the terminology exposes it. For each input `{ code, terminology }`, returns: - **valid**: whether the code exists in the source terminology. - **active**: whether the code is currently active. Null when the source doesn't expose an explicit active/inactive distinction at category level (CID-10, ATC, ICD-11, RxNorm, MeSH all return null today; LOINC returns a real boolean). - **title**: the official label/name when available. - **replaced_by**: a successor code, populated today only for ICD-10 codes that have a primary ICD-11 mapping in the bundled WHO transition tables. - **source**: human-readable provenance of the validation (terminology + release/version). - **error**: non-null only when validation couldn't be performed (network error, upstream outage, etc.). `valid: false` + `error: null` means "code not found"; `valid: false` + `error: set` means "couldn't validate". Terminology is **required per code** — auto-detection isn't supported because category codes like "A00" exist in both ICD-10 and CID-10. Accepted values: `icd11`, `icd10`, `loinc`, `rxnorm`, `mesh`, `atc`, `cid10`. Hard cap of 50 codes per call; codes are validated in parallel through their respective clients, so total wall time scales with the slowest upstream + its rate limit (worst case ~10 s for a full batch hitting ICD-11).
{
"type": "object",
"required": [
"codes"
],
"properties": {
"codes": {
"type": "array",
"items": {
"type": "object",
"required": [
"code",
"terminology"
],
"properties": {
"code": {
"type": "string",
"minLength": 1,
"description": "The code to validate (raw, as it appears in your data)."
},
"terminology": {
"enum": [
"icd11",
"icd10",
"loinc",
"rxnorm",
"mesh",
"atc",
"cid10"
],
"type": "string",
"description": "Which terminology this code belongs to. Required — auto-detection isn't supported because category-level codes like \"A00\" exist in both ICD-10 and CID-10."
}
}
},
"maxItems": 50,
"minItems": 1,
"description": "List of code+terminology pairs to validate. Hard cap of 50 per call to keep total latency under ~10 s given upstream rate limits."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"total",
"valid_count",
"invalid_count",
"error_count",
"results",
"provenance",
"attribution"
],
"properties": {
"total": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Number of codes submitted."
},
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"code",
"terminology",
"valid",
"active",
"title",
"replaced_by",
"source",
"error"
],
"properties": {
"code": {
"type": "string",
"description": "The code as submitted."
},
"error": {
"type": [
"string",
"null"
],
"description": "When the upstream call failed (timeout, server error, feature flag off), this holds the failure message. Distinct from valid=false: valid=false + error=null means \"code not found\"; valid=false + error set means \"couldn't validate\"."
},
"title": {
"type": [
"string",
"null"
],
"description": "Official label/title for the code, when available."
},
"valid": {
"type": "boolean",
"description": "True when the upstream API or bundled dataset confirms the code exists."
},
"active": {
"type": [
"boolean",
"null"
],
"description": "Whether the code is currently active. Null when the source terminology doesn't expose an explicit active/inactive distinction at the category level (e.g. CID-10, ATC)."
},
"source": {
"type": "string",
"description": "Human-readable identifier of the data source used for validation (terminology + release/version where applicable)."
},
"replaced_by": {
"type": [
"string",
"null"
],
"description": "When the code has been superseded by another code, this holds the replacement. Populated today only for ICD-10 codes that have a primary ICD-11 mapping in the bundled WHO transition tables; null otherwise."
},
"terminology": {
"enum": [
"icd11",
"icd10",
"loinc",
"rxnorm",
"mesh",
"atc",
"cid10"
],
"type": "string"
}
},
"additionalProperties": false
},
"description": "One entry per submitted code, in request order."
},
"provenance": {
"type": "array",
"items": {
"type": "object",
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"properties": {
"source": {
"type": "string",
"description": "Official upstream source of this data"
},
"derived": {
"type": "boolean",
"description": "Present (true) only when this server computed the value (e.g. a ranking or summary statistics) instead of passing on what the source returned"
},
"license": {
"type": [
"string",
"null"
],
"description": "License / legal regime of the data"
},
"notices": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Caveats the source publishes about the data, verbatim (license statements are not repeated here; see the info://licenses resource). Absent when there is none"
},
"citation": {
"type": "string",
"description": "Ready-to-use citation/attribution string"
},
"revision": {
"type": "object",
"required": [
"status",
"note"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"description": "O específico da fonte: o que revisa, quando, por quê"
},
"status": {
"enum": [
"current",
"provisional",
"final"
],
"type": "string",
"description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte"
}
},
"description": "Whether the data can still change at the source: current = the version in force, the source may revise it; provisional = preliminary; final = will not change. Absent when unknown",
"additionalProperties": false
},
"retrieval": {
"anyOf": [
{
"type": "object",
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"properties": {
"attempts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Tentativas somadas, incluindo as repetidas (>= requests)"
},
"requests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)"
},
"unstable": {
"type": "boolean",
"description": "true se houve repetição (attempts > requests) ou alguma anomalia"
},
"anomalies": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"count"
],
"properties": {
"kind": {
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string",
"description": "Classe da anomalia (vocabulário fechado do contrato)"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Ocorrências desta classe na chamada"
}
},
"additionalProperties": false
},
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Origin diagnostics of THIS source in this call: 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)"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the source (API base or dataset release)"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Version/release of the data as exposed by the source; null when not exposed"
},
"retrieved_at": {
"type": "string",
"description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant."
},
"field_sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"fields",
"source_url",
"dataset_id",
"data_vintage",
"retrieved_at"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Campos do payload atribuídos a esta sub-fonte"
},
"dataset_id": {
"type": [
"string",
"null"
],
"description": "Identificador do conjunto da sub-fonte"
},
"source_url": {
"type": "string",
"description": "URL canônica da sub-fonte que originou estes campos"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Vintage/competência da sub-fonte"
},
"retrieved_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 da extração desta sub-fonte na origem"
},
"served_from_cache": {
"type": [
"boolean",
"null"
],
"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"
}
},
"description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
"additionalProperties": false
},
"minItems": 1,
"description": "Present only when the response joins parts from different origins or extraction instants: for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses"
},
"derivation_note": {
"type": "string",
"description": "What this server computed; present together with derived"
}
},
"description": "Bloco de proveniência: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, de onde veio cada parte, avisos da fonte, o que o servidor calculou e se o dado ainda pode mudar",
"additionalProperties": false
},
"description": "One provenance block per upstream source that contributed to this response (licenses are never merged; each block carries the origin diagnostics of ITS source)"
},
"attribution": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical source URLs of this response (attribution list)"
},
"error_count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "How many couldn't be validated due to upstream/network errors."
},
"valid_count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "How many were confirmed valid."
},
"invalid_count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "How many were not found."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}find_equivalent — Find Equivalents Across Terminologies
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.
{
"type": "object",
"required": [
"term"
],
"properties": {
"term": {
"type": "string",
"minLength": 1,
"description": "Medical term to search (e.g., \"diabetes\", \"aspirin\")"
},
"limit": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"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."
},
"source_terminology": {
"enum": [
"icd11",
"loinc",
"rxnorm",
"mesh"
],
"type": "string",
"description": "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": {
"type": "array",
"items": {
"enum": [
"icd11",
"loinc",
"rxnorm",
"mesh"
],
"type": "string"
},
"description": "Limit the search to these terminologies. If omitted, all five are searched."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"term",
"source_terminology",
"searched_terminologies",
"results",
"groups",
"ranking",
"provenance",
"attribution"
],
"properties": {
"term": {
"type": "string",
"description": "The medical term as submitted."
},
"groups": {
"type": "array",
"items": {
"type": "object",
"required": [
"normalized_title",
"terminologies",
"members"
],
"properties": {
"members": {
"type": "array",
"items": {
"type": "object",
"required": [
"terminology",
"code",
"title",
"match_score"
],
"properties": {
"code": {
"type": "string"
},
"title": {
"type": "string"
},
"match_score": {
"type": "number",
"maximum": 1,
"minimum": 0
},
"terminology": {
"enum": [
"icd11",
"loinc",
"rxnorm",
"mesh"
],
"type": "string"
}
},
"additionalProperties": false
}
},
"terminologies": {
"type": "array",
"items": {
"enum": [
"icd11",
"loinc",
"rxnorm",
"mesh"
],
"type": "string"
}
},
"normalized_title": {
"type": "string"
}
},
"additionalProperties": false
},
"description": "Candidates from different terminologies whose normalized titles are identical, grouped as likely the same concept; best match_score first. Empty when nothing groups (not evidence of non-equivalence)."
},
"ranking": {
"type": "object",
"required": [
"method",
"note"
],
"properties": {
"note": {
"type": "string",
"description": "How match_score and rank are computed."
},
"method": {
"type": "string",
"const": "lexical",
"description": "Ranking method: lexical similarity computed by this server."
}
},
"description": "Self-description of the ranking: match_score, rank and groups are computed by this server, not upstream relevance.",
"additionalProperties": false
},
"results": {
"type": "object",
"properties": {
"mesh": {
"type": "object",
"required": [
"found",
"error",
"items"
],
"properties": {
"error": {
"type": [
"string",
"null"
],
"description": "Failure message when the search in this terminology failed (timeout, server error); null when it answered."
},
"found": {
"type": "boolean",
"description": "True when this terminology returned at least one candidate."
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"code",
"title",
"uri",
"match_score",
"rank"
],
"properties": {
"uri": {
"type": [
"string",
"null"
]
},
"code": {
"type": "string"
},
"rank": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1
},
"title": {
"type": "string"
},
"match_score": {
"type": "number",
"maximum": 1,
"minimum": 0
}
},
"additionalProperties": false
},
"description": "Candidates from this terminology, best first (by global rank), at most limit."
}
},
"description": "MeSH candidates; present only when MeSH was searched.",
"additionalProperties": false
},
"icd11": {
"type": "object",
"required": [
"found",
"error",
"items"
],
"properties": {
"error": {
"type": [
"string",
"null"
],
"description": "Failure message when the search in this terminology failed (timeout, server error); null when it answered."
},
"found": {
"type": "boolean",
"description": "True when this terminology returned at least one candidate."
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"code",
"title",
"uri",
"match_score",
"rank"
],
"properties": {
"uri": {
"type": [
"string",
"null"
]
},
"code": {
"type": "string"
},
"rank": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1
},
"title": {
"type": "string"
},
"match_score": {
"type": "number",
"maximum": 1,
"minimum": 0
}
},
"additionalProperties": false
},
"description": "Candidates from this terminology, best first (by global rank), at most limit."
}
},
"description": "ICD-11 (WHO) candidates; present only when ICD-11 was searched.",
"additionalProperties": false
},
"loinc": {
"type": "object",
"required": [
"found",
"error",
"items"
],
"properties": {
"error": {
"type": [
"string",
"null"
],
"description": "Failure message when the search in this terminology failed (timeout, server error); null when it answered."
},
"found": {
"type": "boolean",
"description": "True when this terminology returned at least one candidate."
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"code",
"title",
"uri",
"match_score",
"rank"
],
"properties": {
"uri": {
"type": [
"string",
"null"
]
},
"code": {
"type": "string"
},
"rank": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1
},
"title": {
"type": "string"
},
"match_score": {
"type": "number",
"maximum": 1,
"minimum": 0
}
},
"additionalProperties": false
},
"description": "Candidates from this terminology, best first (by global rank), at most limit."
}
},
"description": "LOINC candidates; present only when LOINC was searched.",
"additionalProperties": false
},
"rxnorm": {
"type": "object",
"required": [
"found",
"error",
"items"
],
"properties": {
"error": {
"type": [
"string",
"null"
],
"description": "Failure message when the search in this terminology failed (timeout, server error); null when it answered."
},
"found": {
"type": "boolean",
"description": "True when this terminology returned at least one candidate."
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"code",
"title",
"uri",
"match_score",
"rank"
],
"properties": {
"uri": {
"type": [
"string",
"null"
]
},
"code": {
"type": "string"
},
"rank": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1
},
"title": {
"type": "string"
},
"match_score": {
"type": "number",
"maximum": 1,
"minimum": 0
}
},
"additionalProperties": false
},
"description": "Candidates from this terminology, best first (by global rank), at most limit."
}
},
"description": "RxNorm candidates; present only when RxNorm was searched.",
"additionalProperties": false
}
},
"description": "Per-terminology results, keyed by terminology. A key is absent when that terminology was not searched; found=false with empty items and error null means searched, no hits.",
"additionalProperties": false
},
"provenance": {
"type": "array",
"items": {
"type": "object",
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"properties": {
"source": {
"type": "string",
"description": "Official upstream source of this data"
},
"derived": {
"type": "boolean",
"description": "Present (true) only when this server computed the value (e.g. a ranking or summary statistics) instead of passing on what the source returned"
},
"license": {
"type": [
"string",
"null"
],
"description": "License / legal regime of the data"
},
"notices": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Caveats the source publishes about the data, verbatim (license statements are not repeated here; see the info://licenses resource). Absent when there is none"
},
"citation": {
"type": "string",
"description": "Ready-to-use citation/attribution string"
},
"revision": {
"type": "object",
"required": [
"status",
"note"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"description": "O específico da fonte: o que revisa, quando, por quê"
},
"status": {
"enum": [
"current",
"provisional",
"final"
],
"type": "string",
"description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte"
}
},
"description": "Whether the data can still change at the source: current = the version in force, the source may revise it; provisional = preliminary; final = will not change. Absent when unknown",
"additionalProperties": false
},
"retrieval": {
"anyOf": [
{
"type": "object",
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"properties": {
"attempts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Tentativas somadas, incluindo as repetidas (>= requests)"
},
"requests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)"
},
"unstable": {
"type": "boolean",
"description": "true se houve repetição (attempts > requests) ou alguma anomalia"
},
"anomalies": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"count"
],
"properties": {
"kind": {
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string",
"description": "Classe da anomalia (vocabulário fechado do contrato)"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Ocorrências desta classe na chamada"
}
},
"additionalProperties": false
},
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Origin diagnostics of THIS source in this call: 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)"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the source (API base or dataset release)"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Version/release of the data as exposed by the source; null when not exposed"
},
"retrieved_at": {
"type": "string",
"description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant."
},
"field_sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"fields",
"source_url",
"dataset_id",
"data_vintage",
"retrieved_at"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Campos do payload atribuídos a esta sub-fonte"
},
"dataset_id": {
"type": [
"string",
"null"
],
"description": "Identificador do conjunto da sub-fonte"
},
"source_url": {
"type": "string",
"description": "URL canônica da sub-fonte que originou estes campos"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Vintage/competência da sub-fonte"
},
"retrieved_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 da extração desta sub-fonte na origem"
},
"served_from_cache": {
"type": [
"boolean",
"null"
],
"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"
}
},
"description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
"additionalProperties": false
},
"minItems": 1,
"description": "Present only when the response joins parts from different origins or extraction instants: for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses"
},
"derivation_note": {
"type": "string",
"description": "What this server computed; present together with derived"
}
},
"description": "Bloco de proveniência: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, de onde veio cada parte, avisos da fonte, o que o servidor calculou e se o dado ainda pode mudar",
"additionalProperties": false
},
"description": "One provenance block per upstream source that contributed to this response (licenses are never merged; each block carries the origin diagnostics of ITS source)"
},
"attribution": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical source URLs of this response (attribution list)"
},
"source_terminology": {
"anyOf": [
{
"enum": [
"icd11",
"loinc",
"rxnorm",
"mesh"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Terminology excluded from the search; null when none was given."
},
"searched_terminologies": {
"type": "array",
"items": {
"enum": [
"icd11",
"loinc",
"rxnorm",
"mesh"
],
"type": "string"
},
"description": "Terminologies actually searched: the targets minus source_terminology. Empty when nothing was left to search."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}harmonize_terms — Harmonize Free-Text Terms to Standard Codes
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.
{
"type": "object",
"required": [
"terms"
],
"properties": {
"terms": {
"type": "array",
"items": {
"type": "object",
"required": [
"term",
"domain"
],
"properties": {
"term": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Free-text term as it appears in your data (English), e.g. \"type 2 diabetes\", \"metformin\", \"hemoglobin a1c\"."
},
"domain": {
"enum": [
"diagnosis",
"drug",
"lab"
],
"type": "string",
"description": "What the term names. diagnosis → ICD-11 (WHO); drug → RxNorm ingredient/product concepts plus ATC classes; lab → LOINC."
}
},
"additionalProperties": false
},
"maxItems": 50,
"minItems": 1,
"description": "Terms to harmonize, each with its domain. Up to 50 per call; repeated term+domain pairs are looked up once."
},
"max_candidates": {
"type": "integer",
"maximum": 5,
"minimum": 1,
"description": "Candidates kept per term, best first (1-5, default 3)."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"total",
"unique_lookups",
"counts",
"results",
"ranking",
"provenance",
"attribution"
],
"properties": {
"total": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Terms submitted."
},
"counts": {
"type": "object",
"required": [
"exact",
"strong",
"needs_review",
"no_candidates",
"error"
],
"properties": {
"error": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Terms whose lookup failed."
},
"exact": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Terms whose best candidate is an exact match."
},
"strong": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Terms whose best candidate is a strong match."
},
"needs_review": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Terms whose best candidate needs review."
},
"no_candidates": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Terms the source answered with no candidates."
}
},
"description": "Submitted terms tallied by outcome (best-candidate match_type, no candidates, or error); the five counts add up to total.",
"additionalProperties": false
},
"ranking": {
"type": "object",
"required": [
"method",
"note"
],
"properties": {
"note": {
"type": "string",
"description": "How match_score and match_type are computed."
},
"method": {
"type": "string",
"const": "lexical",
"description": "Ranking method: lexical similarity computed by this server."
}
},
"description": "Self-description of the ranking: match_score and match_type are computed by this server, not upstream relevance.",
"additionalProperties": false
},
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"index",
"term",
"domain",
"terminology",
"status",
"match_type",
"candidates",
"atc",
"error"
],
"properties": {
"atc": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"required": [
"atc_code",
"atc_name"
],
"properties": {
"atc_code": {
"type": "string"
},
"atc_name": {
"type": "string"
}
},
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "Drug terms only: ATC classes NLM RxClass returns for the term (empty when none); null for other domains or when the ATC lookup failed."
},
"term": {
"type": "string"
},
"error": {
"type": [
"string",
"null"
]
},
"index": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Position of the term in the request (0-based)."
},
"domain": {
"enum": [
"diagnosis",
"drug",
"lab"
],
"type": "string",
"description": "What the term names. diagnosis → ICD-11 (WHO); drug → RxNorm ingredient/product concepts plus ATC classes; lab → LOINC."
},
"status": {
"enum": [
"matched",
"no_candidates",
"error"
],
"type": "string",
"description": "matched = at least one candidate; no_candidates = the source answered with nothing; error = the lookup failed (see error)."
},
"candidates": {
"type": "array",
"items": {
"type": "object",
"required": [
"code",
"title",
"uri",
"match_score",
"match_type",
"matched_label"
],
"properties": {
"uri": {
"type": [
"string",
"null"
],
"description": "Entity URI when the terminology exposes one (ICD-11); null otherwise."
},
"code": {
"type": "string",
"description": "Code in the target terminology (ICD-11 code, RxCUI, or LOINC number)."
},
"title": {
"type": "string"
},
"match_type": {
"enum": [
"exact",
"strong",
"needs_review"
],
"type": "string",
"description": "Computed by this server from the lexical score: exact = title equals the term after normalization; strong = every term word is in the title (or the matched synonym) and match_score >= 0.85; needs_review = anything else."
},
"match_score": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Lexical similarity to the term, 0-1 (same formula as find_equivalent), against the title or the best synonym the source matched."
},
"matched_label": {
"type": [
"string",
"null"
],
"description": "The synonym that produced the score when it beat the title (ICD-11 only, e.g. \"hypertension NOS\" for BA00.Z); null when the title scored best."
}
},
"additionalProperties": false
},
"description": "Best first (match_score descending, then upstream order)."
},
"match_type": {
"anyOf": [
{
"enum": [
"exact",
"strong",
"needs_review"
],
"type": "string",
"description": "Computed by this server from the lexical score: exact = title equals the term after normalization; strong = every term word is in the title (or the matched synonym) and match_score >= 0.85; needs_review = anything else."
},
{
"type": "null"
}
],
"description": "match_type of the best candidate; null when there is none."
},
"terminology": {
"enum": [
"icd11",
"rxnorm",
"loinc"
],
"type": "string",
"description": "Terminology searched for this domain."
}
},
"additionalProperties": false
},
"description": "One entry per submitted term, in request order."
},
"provenance": {
"type": "array",
"items": {
"type": "object",
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"properties": {
"source": {
"type": "string",
"description": "Official upstream source of this data"
},
"derived": {
"type": "boolean",
"description": "Present (true) only when this server computed the value (e.g. a ranking or summary statistics) instead of passing on what the source returned"
},
"license": {
"type": [
"string",
"null"
],
"description": "License / legal regime of the data"
},
"notices": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Caveats the source publishes about the data, verbatim (license statements are not repeated here; see the info://licenses resource). Absent when there is none"
},
"citation": {
"type": "string",
"description": "Ready-to-use citation/attribution string"
},
"revision": {
"type": "object",
"required": [
"status",
"note"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"description": "O específico da fonte: o que revisa, quando, por quê"
},
"status": {
"enum": [
"current",
"provisional",
"final"
],
"type": "string",
"description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte"
}
},
"description": "Whether the data can still change at the source: current = the version in force, the source may revise it; provisional = preliminary; final = will not change. Absent when unknown",
"additionalProperties": false
},
"retrieval": {
"anyOf": [
{
"type": "object",
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"properties": {
"attempts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Tentativas somadas, incluindo as repetidas (>= requests)"
},
"requests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)"
},
"unstable": {
"type": "boolean",
"description": "true se houve repetição (attempts > requests) ou alguma anomalia"
},
"anomalies": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"count"
],
"properties": {
"kind": {
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string",
"description": "Classe da anomalia (vocabulário fechado do contrato)"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Ocorrências desta classe na chamada"
}
},
"additionalProperties": false
},
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Origin diagnostics of THIS source in this call: 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)"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the source (API base or dataset release)"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Version/release of the data as exposed by the source; null when not exposed"
},
"retrieved_at": {
"type": "string",
"description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant."
},
"field_sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"fields",
"source_url",
"dataset_id",
"data_vintage",
"retrieved_at"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Campos do payload atribuídos a esta sub-fonte"
},
"dataset_id": {
"type": [
"string",
"null"
],
"description": "Identificador do conjunto da sub-fonte"
},
"source_url": {
"type": "string",
"description": "URL canônica da sub-fonte que originou estes campos"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Vintage/competência da sub-fonte"
},
"retrieved_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 da extração desta sub-fonte na origem"
},
"served_from_cache": {
"type": [
"boolean",
"null"
],
"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"
}
},
"description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
"additionalProperties": false
},
"minItems": 1,
"description": "Present only when the response joins parts from different origins or extraction instants: for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses"
},
"derivation_note": {
"type": "string",
"description": "What this server computed; present together with derived"
}
},
"description": "Bloco de proveniência: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, de onde veio cada parte, avisos da fonte, o que o servidor calculou e se o dado ainda pode mudar",
"additionalProperties": false
},
"description": "One provenance block per upstream source that contributed to this response (licenses are never merged; each block carries the origin diagnostics of ITS source)"
},
"attribution": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical source URLs of this response (attribution list)"
},
"unique_lookups": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Distinct term+domain pairs actually looked up."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}atc_classify — ATC Classification for a Drug
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.
{
"type": "object",
"required": [
"drug_name"
],
"properties": {
"drug_name": {
"type": "string",
"minLength": 1,
"description": "Drug name to classify (brand or generic, e.g., \"metformin\")"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"drug_name",
"matches",
"provenance",
"attribution"
],
"properties": {
"matches": {
"type": "array",
"items": {
"type": "object",
"required": [
"rxcui",
"drug_name",
"tty",
"atc_code",
"atc_name",
"atc_level_type"
],
"properties": {
"tty": {
"type": "string"
},
"rxcui": {
"type": "string"
},
"atc_code": {
"type": "string"
},
"atc_name": {
"type": "string"
},
"drug_name": {
"type": "string"
},
"atc_level_type": {
"type": "string"
}
},
"additionalProperties": false
},
"description": "ATC classes NLM RxClass assigns to the drug, one entry per RxNorm concept and ATC class pair; empty when the drug is unknown or has no ATC mapping."
},
"drug_name": {
"type": "string",
"description": "The drug name as submitted."
},
"provenance": {
"type": "object",
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"properties": {
"source": {
"type": "string",
"description": "Official upstream source of this data"
},
"derived": {
"type": "boolean",
"description": "Present (true) only when this server computed the value (e.g. a ranking or summary statistics) instead of passing on what the source returned"
},
"license": {
"type": [
"string",
"null"
],
"description": "License / legal regime of the data"
},
"notices": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Caveats the source publishes about the data, verbatim (license statements are not repeated here; see the info://licenses resource). Absent when there is none"
},
"citation": {
"type": "string",
"description": "Ready-to-use citation/attribution string"
},
"revision": {
"type": "object",
"required": [
"status",
"note"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"description": "O específico da fonte: o que revisa, quando, por quê"
},
"status": {
"enum": [
"current",
"provisional",
"final"
],
"type": "string",
"description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte"
}
},
"description": "Whether the data can still change at the source: current = the version in force, the source may revise it; provisional = preliminary; final = will not change. Absent when unknown",
"additionalProperties": false
},
"retrieval": {
"anyOf": [
{
"type": "object",
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"properties": {
"attempts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Tentativas somadas, incluindo as repetidas (>= requests)"
},
"requests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)"
},
"unstable": {
"type": "boolean",
"description": "true se houve repetição (attempts > requests) ou alguma anomalia"
},
"anomalies": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"count"
],
"properties": {
"kind": {
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string",
"description": "Classe da anomalia (vocabulário fechado do contrato)"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Ocorrências desta classe na chamada"
}
},
"additionalProperties": false
},
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Origin diagnostics of THIS source in this call: 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)"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the source (API base or dataset release)"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Version/release of the data as exposed by the source; null when not exposed"
},
"retrieved_at": {
"type": "string",
"description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant."
},
"field_sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"fields",
"source_url",
"dataset_id",
"data_vintage",
"retrieved_at"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Campos do payload atribuídos a esta sub-fonte"
},
"dataset_id": {
"type": [
"string",
"null"
],
"description": "Identificador do conjunto da sub-fonte"
},
"source_url": {
"type": "string",
"description": "URL canônica da sub-fonte que originou estes campos"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Vintage/competência da sub-fonte"
},
"retrieved_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 da extração desta sub-fonte na origem"
},
"served_from_cache": {
"type": [
"boolean",
"null"
],
"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"
}
},
"description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
"additionalProperties": false
},
"minItems": 1,
"description": "Present only when the response joins parts from different origins or extraction instants: for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses"
},
"derivation_note": {
"type": "string",
"description": "What this server computed; present together with derived"
}
},
"description": "Provenance block: source, URL, data vintage, extraction instant, origin diagnostics, citation, license",
"additionalProperties": false
},
"attribution": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical source URLs of this response (attribution list)"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}atc_lookup — ATC Code Details
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.
{
"type": "object",
"required": [
"atc_code"
],
"properties": {
"atc_code": {
"type": "string",
"pattern": "^[A-V](\\d{2}([A-Z]([A-Z](\\d{2})?)?)?)?$",
"description": "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."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"atc_code",
"found",
"details",
"provenance",
"attribution"
],
"properties": {
"found": {
"type": "boolean",
"description": "Whether RxClass knows the code at level 1-4; false for unknown and for 7-character substance codes."
},
"details": {
"anyOf": [
{
"type": "object",
"required": [
"atc_code",
"atc_name",
"atc_level_type"
],
"properties": {
"atc_code": {
"type": "string"
},
"atc_name": {
"type": "string"
},
"atc_level_type": {
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "The ATC class (code, name, level type); null when found=false."
},
"atc_code": {
"type": "string",
"description": "The ATC code as submitted."
},
"provenance": {
"type": "object",
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"properties": {
"source": {
"type": "string",
"description": "Official upstream source of this data"
},
"derived": {
"type": "boolean",
"description": "Present (true) only when this server computed the value (e.g. a ranking or summary statistics) instead of passing on what the source returned"
},
"license": {
"type": [
"string",
"null"
],
"description": "License / legal regime of the data"
},
"notices": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Caveats the source publishes about the data, verbatim (license statements are not repeated here; see the info://licenses resource). Absent when there is none"
},
"citation": {
"type": "string",
"description": "Ready-to-use citation/attribution string"
},
"revision": {
"type": "object",
"required": [
"status",
"note"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"description": "O específico da fonte: o que revisa, quando, por quê"
},
"status": {
"enum": [
"current",
"provisional",
"final"
],
"type": "string",
"description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte"
}
},
"description": "Whether the data can still change at the source: current = the version in force, the source may revise it; provisional = preliminary; final = will not change. Absent when unknown",
"additionalProperties": false
},
"retrieval": {
"anyOf": [
{
"type": "object",
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"properties": {
"attempts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Tentativas somadas, incluindo as repetidas (>= requests)"
},
"requests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)"
},
"unstable": {
"type": "boolean",
"description": "true se houve repetição (attempts > requests) ou alguma anomalia"
},
"anomalies": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"count"
],
"properties": {
"kind": {
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string",
"description": "Classe da anomalia (vocabulário fechado do contrato)"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Ocorrências desta classe na chamada"
}
},
"additionalProperties": false
},
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Origin diagnostics of THIS source in this call: 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)"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the source (API base or dataset release)"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Version/release of the data as exposed by the source; null when not exposed"
},
"retrieved_at": {
"type": "string",
"description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant."
},
"field_sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"fields",
"source_url",
"dataset_id",
"data_vintage",
"retrieved_at"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Campos do payload atribuídos a esta sub-fonte"
},
"dataset_id": {
"type": [
"string",
"null"
],
"description": "Identificador do conjunto da sub-fonte"
},
"source_url": {
"type": "string",
"description": "URL canônica da sub-fonte que originou estes campos"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Vintage/competência da sub-fonte"
},
"retrieved_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 da extração desta sub-fonte na origem"
},
"served_from_cache": {
"type": [
"boolean",
"null"
],
"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"
}
},
"description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
"additionalProperties": false
},
"minItems": 1,
"description": "Present only when the response joins parts from different origins or extraction instants: for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses"
},
"derivation_note": {
"type": "string",
"description": "What this server computed; present together with derived"
}
},
"description": "Provenance block: source, URL, data vintage, extraction instant, origin diagnostics, citation, license",
"additionalProperties": false
},
"attribution": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical source URLs of this response (attribution list)"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}atc_members — ATC Class Members
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.
{
"type": "object",
"required": [
"atc_code"
],
"properties": {
"atc_code": {
"type": "string",
"pattern": "^[A-V](\\d{2}([A-Z]([A-Z](\\d{2})?)?)?)?$",
"description": "ATC code at any level. Higher levels (1-4) return all member substances; level 5 returns the single substance."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"atc_code",
"members",
"provenance",
"attribution"
],
"properties": {
"members": {
"type": "array",
"items": {
"type": "object",
"required": [
"rxcui",
"name",
"tty",
"source_atc_code"
],
"properties": {
"tty": {
"type": "string"
},
"name": {
"type": "string"
},
"rxcui": {
"type": "string"
},
"source_atc_code": {
"type": "string"
}
},
"additionalProperties": false
},
"description": "RxNorm drug concepts in the ATC class (all member substances for levels 1-4); empty when the code is unknown or has no RxNorm-mapped members."
},
"atc_code": {
"type": "string",
"description": "The ATC code as submitted."
},
"provenance": {
"type": "object",
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"properties": {
"source": {
"type": "string",
"description": "Official upstream source of this data"
},
"derived": {
"type": "boolean",
"description": "Present (true) only when this server computed the value (e.g. a ranking or summary statistics) instead of passing on what the source returned"
},
"license": {
"type": [
"string",
"null"
],
"description": "License / legal regime of the data"
},
"notices": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Caveats the source publishes about the data, verbatim (license statements are not repeated here; see the info://licenses resource). Absent when there is none"
},
"citation": {
"type": "string",
"description": "Ready-to-use citation/attribution string"
},
"revision": {
"type": "object",
"required": [
"status",
"note"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"description": "O específico da fonte: o que revisa, quando, por quê"
},
"status": {
"enum": [
"current",
"provisional",
"final"
],
"type": "string",
"description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte"
}
},
"description": "Whether the data can still change at the source: current = the version in force, the source may revise it; provisional = preliminary; final = will not change. Absent when unknown",
"additionalProperties": false
},
"retrieval": {
"anyOf": [
{
"type": "object",
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"properties": {
"attempts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Tentativas somadas, incluindo as repetidas (>= requests)"
},
"requests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)"
},
"unstable": {
"type": "boolean",
"description": "true se houve repetição (attempts > requests) ou alguma anomalia"
},
"anomalies": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"count"
],
"properties": {
"kind": {
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string",
"description": "Classe da anomalia (vocabulário fechado do contrato)"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Ocorrências desta classe na chamada"
}
},
"additionalProperties": false
},
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Origin diagnostics of THIS source in this call: 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)"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the source (API base or dataset release)"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Version/release of the data as exposed by the source; null when not exposed"
},
"retrieved_at": {
"type": "string",
"description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant."
},
"field_sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"fields",
"source_url",
"dataset_id",
"data_vintage",
"retrieved_at"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Campos do payload atribuídos a esta sub-fonte"
},
"dataset_id": {
"type": [
"string",
"null"
],
"description": "Identificador do conjunto da sub-fonte"
},
"source_url": {
"type": "string",
"description": "URL canônica da sub-fonte que originou estes campos"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Vintage/competência da sub-fonte"
},
"retrieved_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 da extração desta sub-fonte na origem"
},
"served_from_cache": {
"type": [
"boolean",
"null"
],
"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"
}
},
"description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
"additionalProperties": false
},
"minItems": 1,
"description": "Present only when the response joins parts from different origins or extraction instants: for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses"
},
"derivation_note": {
"type": "string",
"description": "What this server computed; present together with derived"
}
},
"description": "Provenance block: source, URL, data vintage, extraction instant, origin diagnostics, citation, license",
"additionalProperties": false
},
"attribution": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical source URLs of this response (attribution list)"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}cid10_search — Buscar na CID-10
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.
{
"type": "object",
"required": [
"query"
],
"properties": {
"level": {
"enum": [
"categories",
"subcategories",
"all"
],
"type": "string",
"default": "all",
"description": "Restrict search to 3-char categories, 4-char subcategories, or both. Default: all"
},
"query": {
"type": "string",
"minLength": 2,
"description": "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": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "Maximum number of results (1-100). Default: 25"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"query",
"level",
"total_count",
"shown_count",
"hits",
"provenance",
"attribution"
],
"properties": {
"hits": {
"type": "array",
"items": {
"type": "object",
"required": [
"level",
"code",
"display",
"classif",
"title",
"title_short",
"refer",
"excluidos",
"restr_sexo",
"causa_obito",
"chapter_num",
"group_range"
],
"properties": {
"code": {
"type": "string"
},
"level": {
"enum": [
"category",
"subcategory"
],
"type": "string"
},
"refer": {
"type": "string"
},
"title": {
"type": "string"
},
"classif": {
"type": "string"
},
"display": {
"type": "string"
},
"excluidos": {
"type": "string"
},
"restr_sexo": {
"type": "string"
},
"causa_obito": {
"type": "string"
},
"chapter_num": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
]
},
"group_range": {
"type": [
"string",
"null"
]
},
"title_short": {
"type": "string"
}
},
"additionalProperties": false
},
"description": "Matching CID-10 V2008 codes with their Portuguese titles, chapter and group."
},
"level": {
"enum": [
"categories",
"subcategories",
"all"
],
"type": "string",
"description": "Code level searched: 3-char categories, 4-char subcategories, or all."
},
"query": {
"type": "string",
"description": "The search terms as submitted."
},
"provenance": {
"type": "object",
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"properties": {
"source": {
"type": "string",
"description": "Official upstream source of this data"
},
"derived": {
"type": "boolean",
"description": "Present (true) only when this server computed the value (e.g. a ranking or summary statistics) instead of passing on what the source returned"
},
"license": {
"type": [
"string",
"null"
],
"description": "License / legal regime of the data"
},
"notices": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Caveats the source publishes about the data, verbatim (license statements are not repeated here; see the info://licenses resource). Absent when there is none"
},
"citation": {
"type": "string",
"description": "Ready-to-use citation/attribution string"
},
"revision": {
"type": "object",
"required": [
"status",
"note"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"description": "O específico da fonte: o que revisa, quando, por quê"
},
"status": {
"enum": [
"current",
"provisional",
"final"
],
"type": "string",
"description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte"
}
},
"description": "Whether the data can still change at the source: current = the version in force, the source may revise it; provisional = preliminary; final = will not change. Absent when unknown",
"additionalProperties": false
},
"retrieval": {
"anyOf": [
{
"type": "object",
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"properties": {
"attempts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Tentativas somadas, incluindo as repetidas (>= requests)"
},
"requests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)"
},
"unstable": {
"type": "boolean",
"description": "true se houve repetição (attempts > requests) ou alguma anomalia"
},
"anomalies": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"count"
],
"properties": {
"kind": {
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string",
"description": "Classe da anomalia (vocabulário fechado do contrato)"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Ocorrências desta classe na chamada"
}
},
"additionalProperties": false
},
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Origin diagnostics of THIS source in this call: 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)"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the source (API base or dataset release)"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Version/release of the data as exposed by the source; null when not exposed"
},
"retrieved_at": {
"type": "string",
"description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant."
},
"field_sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"fields",
"source_url",
"dataset_id",
"data_vintage",
"retrieved_at"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Campos do payload atribuídos a esta sub-fonte"
},
"dataset_id": {
"type": [
"string",
"null"
],
"description": "Identificador do conjunto da sub-fonte"
},
"source_url": {
"type": "string",
"description": "URL canônica da sub-fonte que originou estes campos"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Vintage/competência da sub-fonte"
},
"retrieved_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 da extração desta sub-fonte na origem"
},
"served_from_cache": {
"type": [
"boolean",
"null"
],
"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"
}
},
"description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
"additionalProperties": false
},
"minItems": 1,
"description": "Present only when the response joins parts from different origins or extraction instants: for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses"
},
"derivation_note": {
"type": "string",
"description": "What this server computed; present together with derived"
}
},
"description": "Provenance block: source, URL, data vintage, extraction instant, origin diagnostics, citation, license",
"additionalProperties": false
},
"attribution": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical source URLs of this response (attribution list)"
},
"shown_count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Number of codes returned in hits (at most max_results)."
},
"total_count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Number of CID-10 codes matching the query, before the max_results cap."
},
"vocabulary_notes": {
"type": "array",
"items": {
"type": "string"
},
"description": "Present only when a query word was translated to the CID-10's own wording (e.g. \"câncer\" → \"neoplasia maligna\"); says which."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}cid10_lookup — Consultar Código CID-10
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.
{
"type": "object",
"required": [
"code"
],
"properties": {
"code": {
"type": "string",
"pattern": "^[A-Z]\\d{2}(\\.?\\d)?$",
"description": "CID-10 code (e.g., \"A00\", \"A00.1\", \"A001\", \"I21\"). Dotted and undotted forms both accepted."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"code",
"found",
"hit",
"provenance",
"attribution"
],
"properties": {
"hit": {
"anyOf": [
{
"type": "object",
"required": [
"level",
"code",
"display",
"classif",
"title",
"title_short",
"refer",
"excluidos",
"restr_sexo",
"causa_obito",
"chapter_num",
"group_range"
],
"properties": {
"code": {
"type": "string"
},
"level": {
"enum": [
"category",
"subcategory"
],
"type": "string"
},
"refer": {
"type": "string"
},
"title": {
"type": "string"
},
"classif": {
"type": "string"
},
"display": {
"type": "string"
},
"excluidos": {
"type": "string"
},
"restr_sexo": {
"type": "string"
},
"causa_obito": {
"type": "string"
},
"chapter_num": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
]
},
"group_range": {
"type": [
"string",
"null"
]
},
"title_short": {
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "The CID-10 entry (Portuguese title, chapter, group, restrictions); null when found=false."
},
"code": {
"type": "string",
"description": "The CID-10 code as submitted."
},
"found": {
"type": "boolean",
"description": "Whether the code exists in CID-10 V2008."
},
"provenance": {
"type": "object",
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"properties": {
"source": {
"type": "string",
"description": "Official upstream source of this data"
},
"derived": {
"type": "boolean",
"description": "Present (true) only when this server computed the value (e.g. a ranking or summary statistics) instead of passing on what the source returned"
},
"license": {
"type": [
"string",
"null"
],
"description": "License / legal regime of the data"
},
"notices": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Caveats the source publishes about the data, verbatim (license statements are not repeated here; see the info://licenses resource). Absent when there is none"
},
"citation": {
"type": "string",
"description": "Ready-to-use citation/attribution string"
},
"revision": {
"type": "object",
"required": [
"status",
"note"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"description": "O específico da fonte: o que revisa, quando, por quê"
},
"status": {
"enum": [
"current",
"provisional",
"final"
],
"type": "string",
"description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte"
}
},
"description": "Whether the data can still change at the source: current = the version in force, the source may revise it; provisional = preliminary; final = will not change. Absent when unknown",
"additionalProperties": false
},
"retrieval": {
"anyOf": [
{
"type": "object",
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"properties": {
"attempts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Tentativas somadas, incluindo as repetidas (>= requests)"
},
"requests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)"
},
"unstable": {
"type": "boolean",
"description": "true se houve repetição (attempts > requests) ou alguma anomalia"
},
"anomalies": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"count"
],
"properties": {
"kind": {
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string",
"description": "Classe da anomalia (vocabulário fechado do contrato)"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Ocorrências desta classe na chamada"
}
},
"additionalProperties": false
},
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Origin diagnostics of THIS source in this call: 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)"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the source (API base or dataset release)"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Version/release of the data as exposed by the source; null when not exposed"
},
"retrieved_at": {
"type": "string",
"description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant."
},
"field_sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"fields",
"source_url",
"dataset_id",
"data_vintage",
"retrieved_at"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Campos do payload atribuídos a esta sub-fonte"
},
"dataset_id": {
"type": [
"string",
"null"
],
"description": "Identificador do conjunto da sub-fonte"
},
"source_url": {
"type": "string",
"description": "URL canônica da sub-fonte que originou estes campos"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Vintage/competência da sub-fonte"
},
"retrieved_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 da extração desta sub-fonte na origem"
},
"served_from_cache": {
"type": [
"boolean",
"null"
],
"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"
}
},
"description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
"additionalProperties": false
},
"minItems": 1,
"description": "Present only when the response joins parts from different origins or extraction instants: for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses"
},
"derivation_note": {
"type": "string",
"description": "What this server computed; present together with derived"
}
},
"description": "Provenance block: source, URL, data vintage, extraction instant, origin diagnostics, citation, license",
"additionalProperties": false
},
"attribution": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical source URLs of this response (attribution list)"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}cid10_chapters — Capítulos da CID-10
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.
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"type": "object",
"required": [
"chapters",
"provenance",
"attribution"
],
"properties": {
"chapters": {
"type": "array",
"items": {
"type": "object",
"required": [
"num",
"code_start",
"code_end",
"title",
"title_short"
],
"properties": {
"num": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
"title": {
"type": "string"
},
"code_end": {
"type": "string"
},
"code_start": {
"type": "string"
},
"title_short": {
"type": "string"
}
},
"additionalProperties": false
},
"description": "The 22 chapters of CID-10 V2008, each with its number, code range and Portuguese title."
},
"provenance": {
"type": "object",
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"properties": {
"source": {
"type": "string",
"description": "Official upstream source of this data"
},
"derived": {
"type": "boolean",
"description": "Present (true) only when this server computed the value (e.g. a ranking or summary statistics) instead of passing on what the source returned"
},
"license": {
"type": [
"string",
"null"
],
"description": "License / legal regime of the data"
},
"notices": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Caveats the source publishes about the data, verbatim (license statements are not repeated here; see the info://licenses resource). Absent when there is none"
},
"citation": {
"type": "string",
"description": "Ready-to-use citation/attribution string"
},
"revision": {
"type": "object",
"required": [
"status",
"note"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"description": "O específico da fonte: o que revisa, quando, por quê"
},
"status": {
"enum": [
"current",
"provisional",
"final"
],
"type": "string",
"description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte"
}
},
"description": "Whether the data can still change at the source: current = the version in force, the source may revise it; provisional = preliminary; final = will not change. Absent when unknown",
"additionalProperties": false
},
"retrieval": {
"anyOf": [
{
"type": "object",
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"properties": {
"attempts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Tentativas somadas, incluindo as repetidas (>= requests)"
},
"requests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)"
},
"unstable": {
"type": "boolean",
"description": "true se houve repetição (attempts > requests) ou alguma anomalia"
},
"anomalies": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"count"
],
"properties": {
"kind": {
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string",
"description": "Classe da anomalia (vocabulário fechado do contrato)"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Ocorrências desta classe na chamada"
}
},
"additionalProperties": false
},
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Origin diagnostics of THIS source in this call: 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)"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the source (API base or dataset release)"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Version/release of the data as exposed by the source; null when not exposed"
},
"retrieved_at": {
"type": "string",
"description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant."
},
"field_sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"fields",
"source_url",
"dataset_id",
"data_vintage",
"retrieved_at"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Campos do payload atribuídos a esta sub-fonte"
},
"dataset_id": {
"type": [
"string",
"null"
],
"description": "Identificador do conjunto da sub-fonte"
},
"source_url": {
"type": "string",
"description": "URL canônica da sub-fonte que originou estes campos"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Vintage/competência da sub-fonte"
},
"retrieved_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 da extração desta sub-fonte na origem"
},
"served_from_cache": {
"type": [
"boolean",
"null"
],
"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"
}
},
"description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
"additionalProperties": false
},
"minItems": 1,
"description": "Present only when the response joins parts from different origins or extraction instants: for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses"
},
"derivation_note": {
"type": "string",
"description": "What this server computed; present together with derived"
}
},
"description": "Provenance block: source, URL, data vintage, extraction instant, origin diagnostics, citation, license",
"additionalProperties": false
},
"attribution": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical source URLs of this response (attribution list)"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}cid10_chapter — Capítulo da CID-10
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.
{
"type": "object",
"required": [
"num"
],
"properties": {
"num": {
"type": "integer",
"maximum": 22,
"minimum": 1,
"description": "Chapter number (1-22). CID-10 V2008 has 22 chapters."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"num",
"found",
"chapter",
"groups",
"provenance",
"attribution"
],
"properties": {
"num": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "The chapter number as submitted."
},
"found": {
"type": "boolean",
"description": "Whether the chapter exists in CID-10 V2008."
},
"groups": {
"type": "array",
"items": {
"type": "object",
"required": [
"code_start",
"code_end",
"title",
"title_short"
],
"properties": {
"title": {
"type": "string"
},
"code_end": {
"type": "string"
},
"code_start": {
"type": "string"
},
"title_short": {
"type": "string"
}
},
"additionalProperties": false
},
"description": "Groups (code-range blocks) of the chapter, each with its range and Portuguese title; empty when found=false."
},
"chapter": {
"anyOf": [
{
"type": "object",
"required": [
"num",
"code_start",
"code_end",
"title",
"title_short"
],
"properties": {
"num": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
"title": {
"type": "string"
},
"code_end": {
"type": "string"
},
"code_start": {
"type": "string"
},
"title_short": {
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "The chapter (number, code range, Portuguese title); null when found=false."
},
"provenance": {
"type": "object",
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"properties": {
"source": {
"type": "string",
"description": "Official upstream source of this data"
},
"derived": {
"type": "boolean",
"description": "Present (true) only when this server computed the value (e.g. a ranking or summary statistics) instead of passing on what the source returned"
},
"license": {
"type": [
"string",
"null"
],
"description": "License / legal regime of the data"
},
"notices": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Caveats the source publishes about the data, verbatim (license statements are not repeated here; see the info://licenses resource). Absent when there is none"
},
"citation": {
"type": "string",
"description": "Ready-to-use citation/attribution string"
},
"revision": {
"type": "object",
"required": [
"status",
"note"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"description": "O específico da fonte: o que revisa, quando, por quê"
},
"status": {
"enum": [
"current",
"provisional",
"final"
],
"type": "string",
"description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte"
}
},
"description": "Whether the data can still change at the source: current = the version in force, the source may revise it; provisional = preliminary; final = will not change. Absent when unknown",
"additionalProperties": false
},
"retrieval": {
"anyOf": [
{
"type": "object",
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"properties": {
"attempts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Tentativas somadas, incluindo as repetidas (>= requests)"
},
"requests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)"
},
"unstable": {
"type": "boolean",
"description": "true se houve repetição (attempts > requests) ou alguma anomalia"
},
"anomalies": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"count"
],
"properties": {
"kind": {
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string",
"description": "Classe da anomalia (vocabulário fechado do contrato)"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Ocorrências desta classe na chamada"
}
},
"additionalProperties": false
},
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Origin diagnostics of THIS source in this call: 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)"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the source (API base or dataset release)"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Version/release of the data as exposed by the source; null when not exposed"
},
"retrieved_at": {
"type": "string",
"description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant."
},
"field_sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"fields",
"source_url",
"dataset_id",
"data_vintage",
"retrieved_at"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Campos do payload atribuídos a esta sub-fonte"
},
"dataset_id": {
"type": [
"string",
"null"
],
"description": "Identificador do conjunto da sub-fonte"
},
"source_url": {
"type": "string",
"description": "URL canônica da sub-fonte que originou estes campos"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Vintage/competência da sub-fonte"
},
"retrieved_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 da extração desta sub-fonte na origem"
},
"served_from_cache": {
"type": [
"boolean",
"null"
],
"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"
}
},
"description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
"additionalProperties": false
},
"minItems": 1,
"description": "Present only when the response joins parts from different origins or extraction instants: for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses"
},
"derivation_note": {
"type": "string",
"description": "What this server computed; present together with derived"
}
},
"description": "Provenance block: source, URL, data vintage, extraction instant, origin diagnostics, citation, license",
"additionalProperties": false
},
"attribution": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical source URLs of this response (attribution list)"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}terminology_versions — Terminology Versions
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.
{
"type": "object",
"properties": {
"terminology": {
"enum": [
"icd11",
"icd10",
"loinc",
"rxnorm",
"mesh",
"atc",
"cid10"
],
"type": "string",
"description": "Filter to a single terminology. Omit to return all 7."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"generated",
"total",
"terminologies",
"provenance",
"attribution"
],
"properties": {
"total": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Number of terminologies listed."
},
"generated": {
"type": "string",
"description": "Date this snapshot was generated."
},
"provenance": {
"type": "object",
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"properties": {
"source": {
"type": "string",
"description": "Official upstream source of this data"
},
"derived": {
"type": "boolean",
"description": "Present (true) only when this server computed the value (e.g. a ranking or summary statistics) instead of passing on what the source returned"
},
"license": {
"type": [
"string",
"null"
],
"description": "License / legal regime of the data"
},
"notices": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Caveats the source publishes about the data, verbatim (license statements are not repeated here; see the info://licenses resource). Absent when there is none"
},
"citation": {
"type": "string",
"description": "Ready-to-use citation/attribution string"
},
"revision": {
"type": "object",
"required": [
"status",
"note"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"description": "O específico da fonte: o que revisa, quando, por quê"
},
"status": {
"enum": [
"current",
"provisional",
"final"
],
"type": "string",
"description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte"
}
},
"description": "Whether the data can still change at the source: current = the version in force, the source may revise it; provisional = preliminary; final = will not change. Absent when unknown",
"additionalProperties": false
},
"retrieval": {
"anyOf": [
{
"type": "object",
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"properties": {
"attempts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Tentativas somadas, incluindo as repetidas (>= requests)"
},
"requests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)"
},
"unstable": {
"type": "boolean",
"description": "true se houve repetição (attempts > requests) ou alguma anomalia"
},
"anomalies": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"count"
],
"properties": {
"kind": {
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string",
"description": "Classe da anomalia (vocabulário fechado do contrato)"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Ocorrências desta classe na chamada"
}
},
"additionalProperties": false
},
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Origin diagnostics of THIS source in this call: 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)"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the source (API base or dataset release)"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Version/release of the data as exposed by the source; null when not exposed"
},
"retrieved_at": {
"type": "string",
"description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant."
},
"field_sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"fields",
"source_url",
"dataset_id",
"data_vintage",
"retrieved_at"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Campos do payload atribuídos a esta sub-fonte"
},
"dataset_id": {
"type": [
"string",
"null"
],
"description": "Identificador do conjunto da sub-fonte"
},
"source_url": {
"type": "string",
"description": "URL canônica da sub-fonte que originou estes campos"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Vintage/competência da sub-fonte"
},
"retrieved_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 da extração desta sub-fonte na origem"
},
"served_from_cache": {
"type": [
"boolean",
"null"
],
"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"
}
},
"description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
"additionalProperties": false
},
"minItems": 1,
"description": "Present only when the response joins parts from different origins or extraction instants: for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses"
},
"derivation_note": {
"type": "string",
"description": "What this server computed; present together with derived"
}
},
"description": "Provenance block: source, URL, data vintage, extraction instant, origin diagnostics, citation, license",
"additionalProperties": false
},
"attribution": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical source URLs of this response (attribution list)"
},
"terminologies": {
"type": "array",
"items": {
"type": "object",
"required": [
"code",
"name",
"full_name",
"publisher",
"current_version",
"release_date",
"source_url",
"changelog_url",
"update_cadence",
"bundled_in_server",
"notes"
],
"properties": {
"code": {
"enum": [
"icd11",
"icd10",
"loinc",
"rxnorm",
"mesh",
"atc",
"cid10"
],
"type": "string"
},
"name": {
"type": "string"
},
"notes": {
"type": [
"string",
"null"
]
},
"full_name": {
"type": "string"
},
"publisher": {
"type": "string"
},
"source_url": {
"type": "string"
},
"release_date": {
"type": "string"
},
"changelog_url": {
"type": [
"string",
"null"
]
},
"update_cadence": {
"type": "string"
},
"current_version": {
"type": "string"
},
"bundled_in_server": {
"type": "boolean"
}
},
"additionalProperties": false
},
"description": "Release this server queries for each terminology (all 7, or the one requested): publisher, current version, release date, update cadence, source and changelog links, and whether the data is bundled in the server."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}terminology_diff — Terminology Version Diff
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.
{
"type": "object",
"required": [
"terminology"
],
"properties": {
"to_version": {
"type": "string",
"description": "Version you want to compare to. Optional."
},
"terminology": {
"enum": [
"icd11",
"icd10",
"loinc",
"rxnorm",
"mesh",
"atc",
"cid10"
],
"type": "string",
"description": "Which terminology to report on."
},
"from_version": {
"type": "string",
"description": "Version you have data from. Optional; behavior depends on terminology."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"terminology",
"from_version",
"to_version",
"diff_available",
"message",
"changelog_url",
"bundled_versions",
"cross_revision_summary",
"provenance",
"attribution"
],
"properties": {
"message": {
"type": "string",
"description": "Explanation of the answer: what was computed, or why no diff is available and where to look instead."
},
"provenance": {
"type": "object",
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"properties": {
"source": {
"type": "string",
"description": "Official upstream source of this data"
},
"derived": {
"type": "boolean",
"description": "Present (true) only when this server computed the value (e.g. a ranking or summary statistics) instead of passing on what the source returned"
},
"license": {
"type": [
"string",
"null"
],
"description": "License / legal regime of the data"
},
"notices": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Caveats the source publishes about the data, verbatim (license statements are not repeated here; see the info://licenses resource). Absent when there is none"
},
"citation": {
"type": "string",
"description": "Ready-to-use citation/attribution string"
},
"revision": {
"type": "object",
"required": [
"status",
"note"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"description": "O específico da fonte: o que revisa, quando, por quê"
},
"status": {
"enum": [
"current",
"provisional",
"final"
],
"type": "string",
"description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte"
}
},
"description": "Whether the data can still change at the source: current = the version in force, the source may revise it; provisional = preliminary; final = will not change. Absent when unknown",
"additionalProperties": false
},
"retrieval": {
"anyOf": [
{
"type": "object",
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"properties": {
"attempts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Tentativas somadas, incluindo as repetidas (>= requests)"
},
"requests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)"
},
"unstable": {
"type": "boolean",
"description": "true se houve repetição (attempts > requests) ou alguma anomalia"
},
"anomalies": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"count"
],
"properties": {
"kind": {
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string",
"description": "Classe da anomalia (vocabulário fechado do contrato)"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Ocorrências desta classe na chamada"
}
},
"additionalProperties": false
},
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Origin diagnostics of THIS source in this call: 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)"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the source (API base or dataset release)"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Version/release of the data as exposed by the source; null when not exposed"
},
"retrieved_at": {
"type": "string",
"description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant."
},
"field_sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"fields",
"source_url",
"dataset_id",
"data_vintage",
"retrieved_at"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Campos do payload atribuídos a esta sub-fonte"
},
"dataset_id": {
"type": [
"string",
"null"
],
"description": "Identificador do conjunto da sub-fonte"
},
"source_url": {
"type": "string",
"description": "URL canônica da sub-fonte que originou estes campos"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Vintage/competência da sub-fonte"
},
"retrieved_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 da extração desta sub-fonte na origem"
},
"served_from_cache": {
"type": [
"boolean",
"null"
],
"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"
}
},
"description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
"additionalProperties": false
},
"minItems": 1,
"description": "Present only when the response joins parts from different origins or extraction instants: for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses"
},
"derivation_note": {
"type": "string",
"description": "What this server computed; present together with derived"
}
},
"description": "Provenance block: source, URL, data vintage, extraction instant, origin diagnostics, citation, license",
"additionalProperties": false
},
"to_version": {
"type": [
"string",
"null"
],
"description": "The to_version requested; null when not given."
},
"attribution": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical source URLs of this response (attribution list)"
},
"terminology": {
"enum": [
"icd11",
"icd10",
"loinc",
"rxnorm",
"mesh",
"atc",
"cid10"
],
"type": "string",
"description": "The terminology reported on, as submitted."
},
"from_version": {
"type": [
"string",
"null"
],
"description": "The from_version requested (for icd10, the bundled ICD-10 release when not given); null when not given."
},
"changelog_url": {
"type": [
"string",
"null"
],
"description": "Publisher's official changelog for the terminology; null when none is known."
},
"diff_available": {
"type": "boolean",
"description": "True when this server has the data to compute a real diff for the requested terminology. False = guidance-only response."
},
"bundled_versions": {
"type": "array",
"items": {
"type": "string"
},
"description": "Versions of this terminology bundled in the server; empty when the server queries the live upstream."
},
"cross_revision_summary": {
"anyOf": [
{
"type": "object",
"required": [
"icd10_categories_total",
"one_to_one_mappings",
"one_to_many_splits",
"avg_alternatives_when_split"
],
"properties": {
"one_to_many_splits": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
"one_to_one_mappings": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
"icd10_categories_total": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
"avg_alternatives_when_split": {
"type": "number"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "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."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}search — Deep Research Search
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.
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "Search terms, natural language or keywords (accents and case are ignored)"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"results",
"provenance",
"attribution"
],
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"title",
"url"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "Unique identifier of the document on this server; what `fetch` takes"
},
"url": {
"type": "string",
"description": "Canonical public URL of the document — ChatGPT's citation depends on it"
},
"title": {
"type": "string",
"description": "Human-readable title of the document"
}
},
"additionalProperties": false
},
"description": "Matching documents, in relevance order"
},
"provenance": {
"type": "array",
"items": {
"type": "object",
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"properties": {
"source": {
"type": "string",
"description": "Official upstream source of this data"
},
"derived": {
"type": "boolean",
"description": "Present (true) only when this server computed the value (e.g. a ranking or summary statistics) instead of passing on what the source returned"
},
"license": {
"type": [
"string",
"null"
],
"description": "License / legal regime of the data"
},
"notices": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Caveats the source publishes about the data, verbatim (license statements are not repeated here; see the info://licenses resource). Absent when there is none"
},
"citation": {
"type": "string",
"description": "Ready-to-use citation/attribution string"
},
"revision": {
"type": "object",
"required": [
"status",
"note"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"description": "O específico da fonte: o que revisa, quando, por quê"
},
"status": {
"enum": [
"current",
"provisional",
"final"
],
"type": "string",
"description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte"
}
},
"description": "Whether the data can still change at the source: current = the version in force, the source may revise it; provisional = preliminary; final = will not change. Absent when unknown",
"additionalProperties": false
},
"retrieval": {
"anyOf": [
{
"type": "object",
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"properties": {
"attempts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Tentativas somadas, incluindo as repetidas (>= requests)"
},
"requests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)"
},
"unstable": {
"type": "boolean",
"description": "true se houve repetição (attempts > requests) ou alguma anomalia"
},
"anomalies": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"count"
],
"properties": {
"kind": {
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string",
"description": "Classe da anomalia (vocabulário fechado do contrato)"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Ocorrências desta classe na chamada"
}
},
"additionalProperties": false
},
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Origin diagnostics of THIS source in this call: 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)"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the source (API base or dataset release)"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Version/release of the data as exposed by the source; null when not exposed"
},
"retrieved_at": {
"type": "string",
"description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant."
},
"field_sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"fields",
"source_url",
"dataset_id",
"data_vintage",
"retrieved_at"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Campos do payload atribuídos a esta sub-fonte"
},
"dataset_id": {
"type": [
"string",
"null"
],
"description": "Identificador do conjunto da sub-fonte"
},
"source_url": {
"type": "string",
"description": "URL canônica da sub-fonte que originou estes campos"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Vintage/competência da sub-fonte"
},
"retrieved_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 da extração desta sub-fonte na origem"
},
"served_from_cache": {
"type": [
"boolean",
"null"
],
"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"
}
},
"description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
"additionalProperties": false
},
"minItems": 1,
"description": "Present only when the response joins parts from different origins or extraction instants: for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses"
},
"derivation_note": {
"type": "string",
"description": "What this server computed; present together with derived"
}
},
"description": "Bloco de proveniência: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, de onde veio cada parte, avisos da fonte, o que o servidor calculou e se o dado ainda pode mudar",
"additionalProperties": false
},
"description": "One provenance block per upstream source that contributed to this response (licenses are never merged; each block carries the origin diagnostics of ITS source)"
},
"attribution": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical source URLs of this response (attribution list)"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}fetch — Deep Research Document
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.
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Identifier of a document returned by `search`"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"id",
"title",
"text",
"url",
"provenance",
"attribution"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "Unique identifier of the document on this server; what `fetch` takes"
},
"url": {
"type": "string",
"description": "Canonical public URL of the document — ChatGPT's citation depends on it"
},
"text": {
"type": "string",
"description": "Full readable content of the document (Markdown)"
},
"title": {
"type": "string",
"description": "Human-readable title of the document"
},
"metadata": {
"type": "object",
"description": "Additional key/value pairs about the document (kind, source, period…)",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"provenance": {
"type": "object",
"required": [
"source",
"source_url",
"data_vintage",
"retrieved_at",
"retrieval",
"citation",
"license"
],
"properties": {
"source": {
"type": "string",
"description": "Official upstream source of this data"
},
"derived": {
"type": "boolean",
"description": "Present (true) only when this server computed the value (e.g. a ranking or summary statistics) instead of passing on what the source returned"
},
"license": {
"type": [
"string",
"null"
],
"description": "License / legal regime of the data"
},
"notices": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Caveats the source publishes about the data, verbatim (license statements are not repeated here; see the info://licenses resource). Absent when there is none"
},
"citation": {
"type": "string",
"description": "Ready-to-use citation/attribution string"
},
"revision": {
"type": "object",
"required": [
"status",
"note"
],
"properties": {
"note": {
"type": [
"string",
"null"
],
"description": "O específico da fonte: o que revisa, quando, por quê"
},
"status": {
"enum": [
"current",
"provisional",
"final"
],
"type": "string",
"description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte"
}
},
"description": "Whether the data can still change at the source: current = the version in force, the source may revise it; provisional = preliminary; final = will not change. Absent when unknown",
"additionalProperties": false
},
"retrieval": {
"anyOf": [
{
"type": "object",
"required": [
"requests",
"attempts",
"anomalies",
"unstable"
],
"properties": {
"attempts": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Tentativas somadas, incluindo as repetidas (>= requests)"
},
"requests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)"
},
"unstable": {
"type": "boolean",
"description": "true se houve repetição (attempts > requests) ou alguma anomalia"
},
"anomalies": {
"type": "array",
"items": {
"type": "object",
"required": [
"kind",
"count"
],
"properties": {
"kind": {
"enum": [
"timeout",
"network",
"http_4xx",
"http_5xx",
"rate_limited",
"malformed_body"
],
"type": "string",
"description": "Classe da anomalia (vocabulário fechado do contrato)"
},
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Ocorrências desta classe na chamada"
}
},
"additionalProperties": false
},
"description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma"
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Origin diagnostics of THIS source in this call: 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)"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the source (API base or dataset release)"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Version/release of the data as exposed by the source; null when not exposed"
},
"retrieved_at": {
"type": "string",
"description": "Real instant of the upstream extraction (ISO-8601, UTC). Responses served from cache keep the ORIGINAL fetch instant."
},
"field_sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"fields",
"source_url",
"dataset_id",
"data_vintage",
"retrieved_at"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Campos do payload atribuídos a esta sub-fonte"
},
"dataset_id": {
"type": [
"string",
"null"
],
"description": "Identificador do conjunto da sub-fonte"
},
"source_url": {
"type": "string",
"description": "URL canônica da sub-fonte que originou estes campos"
},
"data_vintage": {
"type": [
"string",
"null"
],
"description": "Vintage/competência da sub-fonte"
},
"retrieved_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 da extração desta sub-fonte na origem"
},
"served_from_cache": {
"type": [
"boolean",
"null"
],
"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"
}
},
"description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
"additionalProperties": false
},
"minItems": 1,
"description": "Present only when the response joins parts from different origins or extraction instants: for each group of fields, its URL, extraction instant and whether it came from cache. Absent in single-origin responses"
},
"derivation_note": {
"type": "string",
"description": "What this server computed; present together with derived"
}
},
"description": "Provenance block: source, URL, data vintage, extraction instant, origin diagnostics, citation, license",
"additionalProperties": false
},
"attribution": {
"type": "array",
"items": {
"type": "string"
},
"description": "Canonical source URLs of this response (attribution list)"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}Prompts
3 advertised
find-medical-code — Find Medical Code
Search a clinical condition, symptom, or medical term across all available terminologies (ICD-11, LOINC, RxNorm, MeSH, ATC, CID-10) in parallel and synthesize the matches with their codes and source terminology.
- condition
- The condition, symptom, or medical term to search for. (required)
- language
- Preferred language hint — "en" or "pt-BR". When "pt-BR", CID-10 results are prioritized. Defaults to "en".
drug-info — Drug Info
Compile comprehensive information about a drug — normalized name, RxCUI, active ingredients, therapeutic classes, and WHO ATC classification — by composing RxNorm and ATC tool calls.
- drug_name
- The drug name (brand or generic) to look up. Approximate matches are accepted. (required)
cid10-portuguese-lookup — Cid10 Portuguese Lookup
Procura um termo médico em português no CID-10 brasileiro (DataSUS V2008), com contexto de capítulo e descrição clínica. Searches a Portuguese medical term in the Brazilian CID-10 with chapter context.
- term
- Termo médico em português a ser pesquisado (ex.: "infecções respiratórias", "diabetes"). Busca é insensível a acentos. (required)
Resources
4 advertised
Server info — Server info
Version, tool count, supported terminologies, and feature-flag state. Useful for LLMs to ground answers about server capabilities.
info://serverCID-10 chapters — CID-10 chapters
List of the 22 CID-10 chapters (Brazilian Portuguese ICD-10, DataSUS V2008) with code ranges and Portuguese descriptions. Source: bundled CID-10 dataset.
info://cid10/chaptersTerminology licenses — Terminology licenses
Per-terminology license disclaimers and access requirements. Important for downstream redistribution decisions and for surfacing license constraints in LLM answers.
info://licensesUsage stats (hosted endpoint) — Usage stats (hosted endpoint)
Per-tool invocation counts and total successful dispatches recorded by the hosted Cloudflare Workers endpoint. Excludes local stdio installs (those have no shared counter by design). Useful for adoption signal — see top_tool to know which terminology is pulling the most demand.
info://stats90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1815 ms
- 95th percentile latency
- 1815 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1815 ms · metadata changed · 33 tool(s), 4 resource(s), 0 resource template(s), 3 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http medical-terminologies-mcp-sidneybissoli https://medical.sidneybissoli.com/mcpCodex
codex mcp add medical-terminologies-mcp-sidneybissoli --url https://medical.sidneybissoli.com/mcpCursor
{
"mcpServers": {
"medical-terminologies-mcp-sidneybissoli": {
"url": "https://medical.sidneybissoli.com/mcp"
}
}
}Cline
{
"mcpServers": {
"medical-terminologies-mcp-sidneybissoli": {
"type": "streamableHttp",
"url": "https://medical.sidneybissoli.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"medical-terminologies-mcp-sidneybissoli": {
"type": "http",
"url": "https://medical.sidneybissoli.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http medical-terminologies-mcp-sidneybissoli https://medical.sidneybissoli.com/mcpClaude Desktop
https://medical.sidneybissoli.com/mcpWindsurf
{
"mcpServers": {
"medical-terminologies-mcp-sidneybissoli": {
"serverUrl": "https://medical.sidneybissoli.com/mcp"
}
}
}Let your agent find its tools
Find servers like Medical Terminologies MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.