Skip to content

Infermedica MCP by usefulapi

by usefulapi.io · remote · no sign-in to list tools · v1.16.3 · published by io.usefulapi

Run Infermedica symptom checks, diagnosis, triage and condition lookups.

Changes · 5

17 tools: 5 change things and 12 only read.

Scanned Oct 21, 2026

1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http infermedica https://infermedica.usefulapi.io/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn
  • The server marks "infermedica_diagnosis" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true}; The description's first verb is "run": a word for a change.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

17 tools

Changes things 5Claude Code: ask
  • infermedica_diagnosisRun the diagnostic engine over the collected evidence — returns the next question to ask, ranked candidate conditions with probabilities, and a should_stop flag.1 finding

    Why it is in this group

    • The description's first verb is "run": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "infermedica_diagnosis" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true}; The description's first verb is "run": a word for a change.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Compute diagnosis
    • readOnlyHint: true
  • infermedica_parseExtract clinical mentions (symptoms / risk factors) and their states from free-text describing complaints, mapping them to Infermedica evidence ids (NLP).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Parse clinical text
    • readOnlyHint: true
  • infermedica_recommend_specialistRecommend the most appropriate medical specialist and consultation channel for the collected evidence (accepts the same body as diagnosis/triage).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Recommend specialist
    • readOnlyHint: true
  • infermedica_suggestSuggest additional symptoms/observations the patient is likely to have, to speed up the interview.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Suggest additional symptoms/observations the patient is likely to have, to speed up the interview. Non-mutating computation. Engine API: POST /suggest.

    Annotations the server declares

    • title: Suggest observations
    • readOnlyHint: true
  • infermedica_triageRecommend a triage level (emergency_ambulance | emergency | consultation_24 | consultation | self_care) plus any serious/emergency observations, given the evidence.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Compute triage
    • readOnlyHint: true
Only reads 12Claude Code: allow
  • infermedica_explainExplain which evidence supports or conflicts with a given target condition, for the collected evidence.No findings

    Why it is in this group

    • The name "infermedica_explain" says "explain": a word for reading.
    Description, as the server wrote it
    Explain which evidence supports or conflicts with a given target condition, for the collected evidence. Non-mutating computation. Engine API: POST /explain.

    Annotations the server declares

    • title: Explain condition
    • readOnlyHint: true
  • infermedica_get_conditionGet a single condition by its id.No findings

    Why it is in this group

    • The name "infermedica_get_condition" says "get": a word for reading.
    Description, as the server wrote it
    Get a single condition by its id. Engine API: GET /conditions/{id}.

    Annotations the server declares

    • title: Get condition
    • readOnlyHint: true
  • infermedica_get_infoGet metadata about the current Infermedica medical model (version, last update, concept counts).No findings

    Why it is in this group

    • The name "infermedica_get_info" says "get": a word for reading.
    Description, as the server wrote it
    Get metadata about the current Infermedica medical model (version, last update, concept counts). Engine API: GET /info.

    Annotations the server declares

    • title: Get model info
    • readOnlyHint: true
  • infermedica_get_lab_testGet a single lab test by its id.No findings

    Why it is in this group

    • The name "infermedica_get_lab_test" says "get": a word for reading.
    Description, as the server wrote it
    Get a single lab test by its id. Engine API: GET /lab_tests/{id}.

    Annotations the server declares

    • title: Get lab test
    • readOnlyHint: true
  • infermedica_get_risk_factorGet a single risk factor by its id.No findings

    Why it is in this group

    • The name "infermedica_get_risk_factor" says "get": a word for reading.
    Description, as the server wrote it
    Get a single risk factor by its id. Engine API: GET /risk_factors/{id}.

    Annotations the server declares

    • title: Get risk factor
    • readOnlyHint: true
  • infermedica_get_symptomGet a single symptom by its id.No findings

    Why it is in this group

    • The name "infermedica_get_symptom" says "get": a word for reading.
    Description, as the server wrote it
    Get a single symptom by its id. Engine API: GET /symptoms/{id}.

    Annotations the server declares

    • title: Get symptom
    • readOnlyHint: true
  • infermedica_list_conditionsList all conditions (diseases) in the Infermedica medical model.No findings

    Why it is in this group

    • The name "infermedica_list_conditions" says "list": a word for reading.
    Description, as the server wrote it
    List all conditions (diseases) in the Infermedica medical model. Engine API: GET /conditions.

    Annotations the server declares

    • title: List conditions
    • readOnlyHint: true
  • infermedica_list_lab_testsList all lab tests (and their results) in the Infermedica medical model.No findings

    Why it is in this group

    • The name "infermedica_list_lab_tests" says "list": a word for reading.
    Description, as the server wrote it
    List all lab tests (and their results) in the Infermedica medical model. Engine API: GET /lab_tests.

    Annotations the server declares

    • title: List lab tests
    • readOnlyHint: true
  • infermedica_list_risk_factorsList all risk factors in the Infermedica medical model.No findings

    Why it is in this group

    • The name "infermedica_list_risk_factors" says "list": a word for reading.
    Description, as the server wrote it
    List all risk factors in the Infermedica medical model. Engine API: GET /risk_factors.

    Annotations the server declares

    • title: List risk factors
    • readOnlyHint: true
  • infermedica_list_symptomsList all symptoms in the Infermedica medical model (optionally age-filtered).No findings

    Why it is in this group

    • The name "infermedica_list_symptoms" says "list": a word for reading.
    Description, as the server wrote it
    List all symptoms in the Infermedica medical model (optionally age-filtered). Engine API: GET /symptoms.

    Annotations the server declares

    • title: List symptoms
    • readOnlyHint: true
  • infermedica_rationaleExplain WHY the diagnostic engine wants to ask its next question, given the evidence.No findings

    Why it is in this group

    • The description's first verb is "explain": a word for reading.
    Description, as the server wrote it
    Explain WHY the diagnostic engine wants to ask its next question, given the evidence. Non-mutating computation. Engine API: POST /rationale.

    Annotations the server declares

    • title: Get question rationale
    • readOnlyHint: true
  • infermedica_search_conceptsSearch the medical concept database for observations matching a phrase (autocomplete).No findings

    Why it is in this group

    • The name "infermedica_search_concepts" says "search": a word for reading.
    Description, as the server wrote it
    Search the medical concept database for observations matching a phrase (autocomplete). Engine API: GET /search.

    Annotations the server declares

    • title: Search concepts
    • readOnlyHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.16.3. Values in angle brackets are yours to fill in.

claude mcp add --transport http infermedica https://infermedica.usefulapi.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__infermedica__infermedica_list_symptoms",
      "mcp__infermedica__infermedica_get_symptom",
      "mcp__infermedica__infermedica_list_conditions",
      "mcp__infermedica__infermedica_get_condition",
      "mcp__infermedica__infermedica_list_risk_factors",
      "mcp__infermedica__infermedica_get_risk_factor",
      "mcp__infermedica__infermedica_list_lab_tests",
      "mcp__infermedica__infermedica_get_lab_test",
      "mcp__infermedica__infermedica_search_concepts",
      "mcp__infermedica__infermedica_get_info",
      "mcp__infermedica__infermedica_explain",
      "mcp__infermedica__infermedica_rationale"
    ],
    "ask": [
      "mcp__infermedica__infermedica_diagnosis",
      "mcp__infermedica__infermedica_triage",
      "mcp__infermedica__infermedica_suggest",
      "mcp__infermedica__infermedica_parse",
      "mcp__infermedica__infermedica_recommend_specialist"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as infermedica. Review it before you use it.