Infermedica MCP by usefulapi
Run Infermedica symptom checks, diagnosis, triage and condition lookups.
Should I use this
Quality & Safety
Findings (2)
- LOWin infermedica_triage
- LOWin infermedica_recommend_specialist
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"infermedica": {
"url": "https://infermedica.usefulapi.io/mcp"
}
}
}Remote endpoints
https://infermedica.usefulapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (17)
🟢infermedica_list_symptoms(age, enable_triage_5, model_id, dev_mode)
List all symptoms in the Infermedica medical model (optionally age-filtered). Engine API: GET /symptoms.
Input Schema
{
"type": "object",
"properties": {
"age": {
"description": "Optional age filter (returns only age-relevant symptoms).",
"type": "object",
"properties": {
"value": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Age value (an integer)."
},
"unit": {
"description": "Age unit: 'year' (default) or 'month'.",
"type": "string",
"enum": [
"year",
"month"
]
}
},
"required": [
"value"
]
},
"enable_triage_5": {
"description": "If true, include symptoms only used by the 5-level triage model.",
"type": "boolean"
},
"model_id": {
"description": "Optional medical model id → sent as the `Model-Id` request header.",
"type": "string"
},
"dev_mode": {
"description": "If true, mark the request as test traffic → sends the `Dev-Mode: true` header.",
"type": "boolean"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢infermedica_get_symptom(id, age, model_id, dev_mode)
Get a single symptom by its id. Engine API: GET /symptoms/{id}.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Symptom id, e.g. 's_21' (required)."
},
"age": {
"description": "Optional age context.",
"type": "object",
"properties": {
"value": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Age value (an integer)."
},
"unit": {
"description": "Age unit: 'year' (default) or 'month'.",
"type": "string",
"enum": [
"year",
"month"
]
}
},
"required": [
"value"
]
},
"model_id": {
"description": "Optional medical model id → sent as the `Model-Id` request header.",
"type": "string"
},
"dev_mode": {
"description": "If true, mark the request as test traffic → sends the `Dev-Mode: true` header.",
"type": "boolean"
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢infermedica_list_conditions(age, model_id, dev_mode)
List all conditions (diseases) in the Infermedica medical model. Engine API: GET /conditions.
Input Schema
{
"type": "object",
"properties": {
"age": {
"description": "Optional age filter.",
"type": "object",
"properties": {
"value": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Age value (an integer)."
},
"unit": {
"description": "Age unit: 'year' (default) or 'month'.",
"type": "string",
"enum": [
"year",
"month"
]
}
},
"required": [
"value"
]
},
"model_id": {
"description": "Optional medical model id → sent as the `Model-Id` request header.",
"type": "string"
},
"dev_mode": {
"description": "If true, mark the request as test traffic → sends the `Dev-Mode: true` header.",
"type": "boolean"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢infermedica_get_condition(id, age, model_id, dev_mode)
Get a single condition by its id. Engine API: GET /conditions/{id}.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Condition id, e.g. 'c_87' (required)."
},
"age": {
"description": "Optional age context.",
"type": "object",
"properties": {
"value": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Age value (an integer)."
},
"unit": {
"description": "Age unit: 'year' (default) or 'month'.",
"type": "string",
"enum": [
"year",
"month"
]
}
},
"required": [
"value"
]
},
"model_id": {
"description": "Optional medical model id → sent as the `Model-Id` request header.",
"type": "string"
},
"dev_mode": {
"description": "If true, mark the request as test traffic → sends the `Dev-Mode: true` header.",
"type": "boolean"
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢infermedica_list_risk_factors(age, model_id, dev_mode)
List all risk factors in the Infermedica medical model. Engine API: GET /risk_factors.
Input Schema
{
"type": "object",
"properties": {
"age": {
"description": "Optional age filter.",
"type": "object",
"properties": {
"value": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Age value (an integer)."
},
"unit": {
"description": "Age unit: 'year' (default) or 'month'.",
"type": "string",
"enum": [
"year",
"month"
]
}
},
"required": [
"value"
]
},
"model_id": {
"description": "Optional medical model id → sent as the `Model-Id` request header.",
"type": "string"
},
"dev_mode": {
"description": "If true, mark the request as test traffic → sends the `Dev-Mode: true` header.",
"type": "boolean"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢infermedica_get_risk_factor(id, age, model_id, dev_mode)
Get a single risk factor by its id. Engine API: GET /risk_factors/{id}.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Risk factor id, e.g. 'p_28' (required)."
},
"age": {
"description": "Optional age context.",
"type": "object",
"properties": {
"value": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Age value (an integer)."
},
"unit": {
"description": "Age unit: 'year' (default) or 'month'.",
"type": "string",
"enum": [
"year",
"month"
]
}
},
"required": [
"value"
]
},
"model_id": {
"description": "Optional medical model id → sent as the `Model-Id` request header.",
"type": "string"
},
"dev_mode": {
"description": "If true, mark the request as test traffic → sends the `Dev-Mode: true` header.",
"type": "boolean"
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢infermedica_list_lab_tests(age, model_id, dev_mode)
List all lab tests (and their results) in the Infermedica medical model. Engine API: GET /lab_tests.
Input Schema
{
"type": "object",
"properties": {
"age": {
"description": "Optional age filter.",
"type": "object",
"properties": {
"value": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Age value (an integer)."
},
"unit": {
"description": "Age unit: 'year' (default) or 'month'.",
"type": "string",
"enum": [
"year",
"month"
]
}
},
"required": [
"value"
]
},
"model_id": {
"description": "Optional medical model id → sent as the `Model-Id` request header.",
"type": "string"
},
"dev_mode": {
"description": "If true, mark the request as test traffic → sends the `Dev-Mode: true` header.",
"type": "boolean"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢infermedica_get_lab_test(id, age, model_id, dev_mode)
Get a single lab test by its id. Engine API: GET /lab_tests/{id}.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Lab test id, e.g. 'lt_1' (required)."
},
"age": {
"description": "Optional age context.",
"type": "object",
"properties": {
"value": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Age value (an integer)."
},
"unit": {
"description": "Age unit: 'year' (default) or 'month'.",
"type": "string",
"enum": [
"year",
"month"
]
}
},
"required": [
"value"
]
},
"model_id": {
"description": "Optional medical model id → sent as the `Model-Id` request header.",
"type": "string"
},
"dev_mode": {
"description": "If true, mark the request as test traffic → sends the `Dev-Mode: true` header.",
"type": "boolean"
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢infermedica_search_concepts(phrase, sex, age, max_results, types, ...)
Search the medical concept database for observations matching a phrase (autocomplete). Engine API: GET /search.
Input Schema
{
"type": "object",
"properties": {
"phrase": {
"type": "string",
"description": "Text phrase to match against concept names/synonyms (required)."
},
"sex": {
"description": "Optional sex filter.",
"type": "string",
"enum": [
"male",
"female"
]
},
"age": {
"description": "Optional age filter.",
"type": "object",
"properties": {
"value": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Age value (an integer)."
},
"unit": {
"description": "Age unit: 'year' (default) or 'month'.",
"type": "string",
"enum": [
"year",
"month"
]
}
},
"required": [
"value"
]
},
"max_results": {
"description": "Maximum number of results to return (default 8).",
"type": "integer",
"minimum": 1,
"maximum": 50
},
"types": {
"description": "Restrict results to these concept types.",
"type": "array",
"items": {
"type": "string",
"enum": [
"symptom",
"risk_factor",
"lab_test"
]
}
},
"model_id": {
"description": "Optional medical model id → sent as the `Model-Id` request header.",
"type": "string"
},
"dev_mode": {
"description": "If true, mark the request as test traffic → sends the `Dev-Mode: true` header.",
"type": "boolean"
}
},
"required": [
"phrase"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢infermedica_get_info(age, model_id, dev_mode)
Get metadata about the current Infermedica medical model (version, last update, concept counts). Engine API: GET /info.
Input Schema
{
"type": "object",
"properties": {
"age": {
"description": "Optional age context.",
"type": "object",
"properties": {
"value": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Age value (an integer)."
},
"unit": {
"description": "Age unit: 'year' (default) or 'month'.",
"type": "string",
"enum": [
"year",
"month"
]
}
},
"required": [
"value"
]
},
"model_id": {
"description": "Optional medical model id → sent as the `Model-Id` request header.",
"type": "string"
},
"dev_mode": {
"description": "If true, mark the request as test traffic → sends the `Dev-Mode: true` header.",
"type": "boolean"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢infermedica_diagnosis(sex, age, evidence, extras, model_id, ...)
Run the diagnostic engine over the collected evidence — returns the next question to ask, ranked candidate conditions with probabilities, and a should_stop flag. Non-mutating computation. Engine API: POST /diagnosis.
Input Schema
{
"type": "object",
"properties": {
"sex": {
"type": "string",
"enum": [
"male",
"female"
],
"description": "Patient biological sex."
},
"age": {
"type": "object",
"properties": {
"value": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Age value (an integer)."
},
"unit": {
"description": "Age unit: 'year' (default) or 'month'.",
"type": "string",
"enum": [
"year",
"month"
]
}
},
"required": [
"value"
],
"description": "Patient age, e.g. { value: 30 } or { value: 6, unit: 'month' }."
},
"evidence": {
"description": "Evidence collected so far (may be empty for the first call).",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Observation id, e.g. 's_21' (symptom), 'p_28' (risk factor), 'lt_1' (lab test)."
},
"choice_id": {
"type": "string",
"enum": [
"present",
"absent",
"unknown"
],
"description": "Observation state: present, absent, or unknown."
},
"source": {
"description": "Optional origin flag: initial | suggest | predefined | red_flags.",
"type": "string"
}
},
"required": [
"id",
"choice_id"
]
}
},
"extras": {
"description": "Optional engine flags (e.g. disable_groups, enable_triage_5).",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"model_id": {
"description": "Optional medical model id → sent as the `Model-Id` request header.",
"type": "string"
},
"dev_mode": {
"description": "If true, mark the request as test traffic → sends the `Dev-Mode: true` header.",
"type": "boolean"
}
},
"required": [
"sex",
"age"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢infermedica_triage(sex, age, evidence, extras, model_id, ...)
Recommend a triage level (emergency_ambulance | emergency | consultation_24 | consultation | self_care) plus any serious/emergency observations, given the evidence. Non-mutating computation. Engine API: POST /triage.
Input Schema
{
"type": "object",
"properties": {
"sex": {
"type": "string",
"enum": [
"male",
"female"
],
"description": "Patient biological sex."
},
"age": {
"type": "object",
"properties": {
"value": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Age value (an integer)."
},
"unit": {
"description": "Age unit: 'year' (default) or 'month'.",
"type": "string",
"enum": [
"year",
"month"
]
}
},
"required": [
"value"
],
"description": "Patient age, e.g. { value: 30 } or { value: 6, unit: 'month' }."
},
"evidence": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Observation id, e.g. 's_21' (symptom), 'p_28' (risk factor), 'lt_1' (lab test)."
},
"choice_id": {
"type": "string",
"enum": [
"present",
"absent",
"unknown"
],
"description": "Observation state: present, absent, or unknown."
},
"source": {
"description": "Optional origin flag: initial | suggest | predefined | red_flags.",
"type": "string"
}
},
"required": [
"id",
"choice_id"
]
},
"description": "List of observed evidence (symptoms / risk factors / lab tests) and their states."
},
"extras": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"model_id": {
"description": "Optional medical model id → sent as the `Model-Id` request header.",
"type": "string"
},
"dev_mode": {
"description": "If true, mark the request as test traffic → sends the `Dev-Mode: true` header.",
"type": "boolean"
}
},
"required": [
"sex",
"age"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢infermedica_explain(sex, age, target, evidence, extras, ...)
Explain which evidence supports or conflicts with a given target condition, for the collected evidence. Non-mutating computation. Engine API: POST /explain.
Input Schema
{
"type": "object",
"properties": {
"sex": {
"type": "string",
"enum": [
"male",
"female"
],
"description": "Patient biological sex."
},
"age": {
"type": "object",
"properties": {
"value": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Age value (an integer)."
},
"unit": {
"description": "Age unit: 'year' (default) or 'month'.",
"type": "string",
"enum": [
"year",
"month"
]
}
},
"required": [
"value"
],
"description": "Patient age, e.g. { value: 30 } or { value: 6, unit: 'month' }."
},
"target": {
"type": "string",
"description": "Target condition id to explain, e.g. 'c_49' (required)."
},
"evidence": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Observation id, e.g. 's_21' (symptom), 'p_28' (risk factor), 'lt_1' (lab test)."
},
"choice_id": {
"type": "string",
"enum": [
"present",
"absent",
"unknown"
],
"description": "Observation state: present, absent, or unknown."
},
"source": {
"description": "Optional origin flag: initial | suggest | predefined | red_flags.",
"type": "string"
}
},
"required": [
"id",
"choice_id"
]
},
"description": "List of observed evidence (symptoms / risk factors / lab tests) and their states."
},
"extras": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"model_id": {
"description": "Optional medical model id → sent as the `Model-Id` request header.",
"type": "string"
},
"dev_mode": {
"description": "If true, mark the request as test traffic → sends the `Dev-Mode: true` header.",
"type": "boolean"
}
},
"required": [
"sex",
"age",
"target"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢infermedica_suggest(sex, age, evidence, suggest_method, max_results, ...)
Suggest additional symptoms/observations the patient is likely to have, to speed up the interview. Non-mutating computation. Engine API: POST /suggest.
Input Schema
{
"type": "object",
"properties": {
"sex": {
"type": "string",
"enum": [
"male",
"female"
],
"description": "Patient biological sex."
},
"age": {
"type": "object",
"properties": {
"value": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Age value (an integer)."
},
"unit": {
"description": "Age unit: 'year' (default) or 'month'.",
"type": "string",
"enum": [
"year",
"month"
]
}
},
"required": [
"value"
],
"description": "Patient age, e.g. { value: 30 } or { value: 6, unit: 'month' }."
},
"evidence": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Observation id, e.g. 's_21' (symptom), 'p_28' (risk factor), 'lt_1' (lab test)."
},
"choice_id": {
"type": "string",
"enum": [
"present",
"absent",
"unknown"
],
"description": "Observation state: present, absent, or unknown."
},
"source": {
"description": "Optional origin flag: initial | suggest | predefined | red_flags.",
"type": "string"
}
},
"required": [
"id",
"choice_id"
]
},
"description": "List of observed evidence (symptoms / risk factors / lab tests) and their states."
},
"suggest_method": {
"description": "Which kind of observations to suggest (default 'symptoms'). Sent as the `suggest_method` query param.",
"type": "string",
"enum": [
"symptoms",
"risk_factors",
"red_flags"
]
},
"max_results": {
"description": "Maximum number of suggestions.",
"type": "integer",
"minimum": 1,
"maximum": 50
},
"extras": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"model_id": {
"description": "Optional medical model id → sent as the `Model-Id` request header.",
"type": "string"
},
"dev_mode": {
"description": "If true, mark the request as test traffic → sends the `Dev-Mode: true` header.",
"type": "boolean"
}
},
"required": [
"sex",
"age"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢infermedica_rationale(sex, age, evidence, extras, model_id, ...)
Explain WHY the diagnostic engine wants to ask its next question, given the evidence. Non-mutating computation. Engine API: POST /rationale.
Input Schema
{
"type": "object",
"properties": {
"sex": {
"type": "string",
"enum": [
"male",
"female"
],
"description": "Patient biological sex."
},
"age": {
"type": "object",
"properties": {
"value": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Age value (an integer)."
},
"unit": {
"description": "Age unit: 'year' (default) or 'month'.",
"type": "string",
"enum": [
"year",
"month"
]
}
},
"required": [
"value"
],
"description": "Patient age, e.g. { value: 30 } or { value: 6, unit: 'month' }."
},
"evidence": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Observation id, e.g. 's_21' (symptom), 'p_28' (risk factor), 'lt_1' (lab test)."
},
"choice_id": {
"type": "string",
"enum": [
"present",
"absent",
"unknown"
],
"description": "Observation state: present, absent, or unknown."
},
"source": {
"description": "Optional origin flag: initial | suggest | predefined | red_flags.",
"type": "string"
}
},
"required": [
"id",
"choice_id"
]
},
"description": "List of observed evidence (symptoms / risk factors / lab tests) and their states."
},
"extras": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"model_id": {
"description": "Optional medical model id → sent as the `Model-Id` request header.",
"type": "string"
},
"dev_mode": {
"description": "If true, mark the request as test traffic → sends the `Dev-Mode: true` header.",
"type": "boolean"
}
},
"required": [
"sex",
"age"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢infermedica_parse(text, age, sex, context, include_tokens, ...)
Extract clinical mentions (symptoms / risk factors) and their states from free-text describing complaints, mapping them to Infermedica evidence ids (NLP). Non-mutating computation. Engine API: POST /parse.
Input Schema
{
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "Free-text describing the patient's complaints (required)."
},
"age": {
"type": "object",
"properties": {
"value": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Age value (an integer)."
},
"unit": {
"description": "Age unit: 'year' (default) or 'month'.",
"type": "string",
"enum": [
"year",
"month"
]
}
},
"required": [
"value"
],
"description": "Patient age, e.g. { value: 30 } or { value: 6, unit: 'month' }."
},
"sex": {
"type": "string",
"enum": [
"male",
"female"
],
"description": "Patient biological sex."
},
"context": {
"description": "Ordered ids of already-captured present symptoms, used as parsing context.",
"type": "array",
"items": {
"type": "string"
}
},
"include_tokens": {
"description": "If true, include tokenization details in the output.",
"type": "boolean"
},
"concept_types": {
"description": "Restrict captured mentions to these concept types.",
"type": "array",
"items": {
"type": "string",
"enum": [
"symptom",
"risk_factor"
]
}
},
"correct_spelling": {
"description": "If true, correct spelling of the input before analysis.",
"type": "boolean"
},
"model_id": {
"description": "Optional medical model id → sent as the `Model-Id` request header.",
"type": "string"
},
"dev_mode": {
"description": "If true, mark the request as test traffic → sends the `Dev-Mode: true` header.",
"type": "boolean"
}
},
"required": [
"text",
"age",
"sex"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢infermedica_recommend_specialist(sex, age, evidence, extras, model_id, ...)
Recommend the most appropriate medical specialist and consultation channel for the collected evidence (accepts the same body as diagnosis/triage). Non-mutating computation. Engine API: POST /recommend_specialist.
Input Schema
{
"type": "object",
"properties": {
"sex": {
"type": "string",
"enum": [
"male",
"female"
],
"description": "Patient biological sex."
},
"age": {
"type": "object",
"properties": {
"value": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "Age value (an integer)."
},
"unit": {
"description": "Age unit: 'year' (default) or 'month'.",
"type": "string",
"enum": [
"year",
"month"
]
}
},
"required": [
"value"
],
"description": "Patient age, e.g. { value: 30 } or { value: 6, unit: 'month' }."
},
"evidence": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Observation id, e.g. 's_21' (symptom), 'p_28' (risk factor), 'lt_1' (lab test)."
},
"choice_id": {
"type": "string",
"enum": [
"present",
"absent",
"unknown"
],
"description": "Observation state: present, absent, or unknown."
},
"source": {
"description": "Optional origin flag: initial | suggest | predefined | red_flags.",
"type": "string"
}
},
"required": [
"id",
"choice_id"
]
},
"description": "List of observed evidence (symptoms / risk factors / lab tests) and their states."
},
"extras": {
"description": "Optional flags (e.g. a specialist_mapping remap).",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"model_id": {
"description": "Optional medical model id → sent as the `Model-Id` request header.",
"type": "string"
},
"dev_mode": {
"description": "If true, mark the request as test traffic → sends the `Dev-Mode: true` header.",
"type": "boolean"
}
},
"required": [
"sex",
"age"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence