Skip to main content
Glama

Deterministic Clinical Score Calculator

calculate_clinical_score
Read-onlyIdempotent

Calculate validated clinical risk scores, renal function, triage indices, and capped pediatric doses from patient parameters, with deterministic results, interpretations, and safety warnings.

Instructions

Executes validated mathematical clinical risk calculators, renal clearance formulas, triage indices, and patient-specific dosage adjustments with ceiling caps using deterministic arithmetic.

When to use:

  • Calculating exact, non-hallucinated clinical risk scores, renal staging, physiological indices, or patient-specific dosage adjustments from discrete patient parameters.

When NOT to use:

  • Acute emergency triage or symptom-based red-flag evaluation without discrete parameters (use check_red_flags instead).

  • Drug-drug interaction or pharmacological contraindication screening (use check_drug_interactions instead).

  • Mapping commercial trade brand names to generic entities (use normalize_terminology instead).

Parameter constraints & formats:

  • 'calculator_id': Target calculation engine enum from inputSchema.

  • 'params': Inputs mapped by clinical calculator domain:

    • Renal clearance ('ckd_epi_2021_egfr', 'bedside_schwartz_egfr', 'cockcroft_gault_crcl'): serum_creatinine, age_years (>=18 for adult, <18 for Schwartz), biological_sex, actual_weight_kg, height_cm (evaluates KDIGO 2021 and Schwartz equations).

    • Cardiovascular & bleeding ('cha2ds2_va_esc2024', 'cha2ds2_vasc_aha2023', 'has_bled_score'): age_years, biological_sex, and medical history booleans evaluating ESC 2024 and HAS-BLED thresholds.

    • Acuity & pneumonia triage ('news2_score', 'curb65_score'): respiratory_rate, oxygen_saturation, systolic_bp, pulse_rate, temperature_celsius, consciousness_level ('Alert'|'CVPU'), on_supplemental_oxygen, confusion, BUN.

    • Pediatric dosing & BSA ('pediatric_dose_calculator', 'mosteller_bsa'): weight_kg, height_cm, dose_per_kg, max_single_adult_dose_mg (enforcing adult ceiling caps to prevent pediatric overdosing).

    • Thromboembolism criteria ('wells_dvt_score', 'wells_pe_score'): clinical criteria booleans evaluating pre-test probability for DVT and pulmonary embolism.

Behavioral guarantees & return states:

  • Pure deterministic arithmetic: Stateless in-memory execution; requires no API keys, credentials, or network auth, with zero rate limits.

  • Physiological boundary validation: Parameters exceeding safe physiological limits trigger SafeCalculationRefusal (status='CALCULATION_REFUSED_SAFE_ABSTENTION') with clinical reason; unrecognized calculator_id safely returns an explicit error message without throwing uncaught exceptions.

  • Output contract: Returns structured JSON with calculator_id, score, unit, interpretation_band, clinical_recommendation, guideline_citation, and warnings.

Input Schema

NameRequiredDescriptionDefault
paramsYesKey-value clinical parameters, vital signs, laboratory values, and medical history booleans required for the specified calculator_id.
calculator_idYesIdentifier of the target clinical calculation engine to execute.

Output Schema

NameRequiredDescriptionDefault
unitYesUnit of measurement for the computed score (e.g. 'points', 'mL/min/1.73m2', 'mg').
scoreYesDeterministic computed numerical score, clearance, or dose value.
reasonNoDetailed explanation if calculation was safely refused due to out-of-bounds input.
statusNoExecution status ('CALCULATION_REFUSED_SAFE_ABSTENTION' if physiological inputs exceed safe limits).
warningsYesClinical cautionary notes, physiological boundary flags, or special population considerations.
calculator_idYesUnique identifier of the executed clinical calculator engine.
recommendationNoClinical safety recommendation following safe calculation refusal.
guideline_citationYesAuthoritative clinical practice guideline source citation (e.g. ESC 2024, AHA 2023, KDIGO 2021).
interpretation_bandYesEvidence-grounded risk category, clinical stage, or severity interpretation.
clinical_recommendationYesActionable, guideline-concordant therapeutic or monitoring recommendation.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed84 schema fields changedv0.1.2
    • addedInput schema / properties / calculator_id / examples
      Added value: +[
      +  "cha2ds2_va_esc2024",
      +  "ckd_epi_2021_egfr"
      +]
    • addedInput schema / properties / params / properties / active_cancer
      Added value: +{
      +  "default": false,
      +  "description": "Active cancer with ongoing treatment, within 6 months, or palliative (+1 in Wells DVT).",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / params / properties / active_malignancy
      Added value: +{
      +  "default": false,
      +  "description": "Active malignancy treated within past 6 months or palliative (+1 point in Wells PE).",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / params / properties / actual_weight_kg / examples
      Added value: +[
      +  75
      +]
    • addedInput schema / properties / params / properties / actual_weight_kg / maximum
      Added value: +400
    • addedInput schema / properties / params / properties / actual_weight_kg / minimum
      Added value: +1
    • addedInput schema / properties / params / properties / age_years / examples
      Added value: +[
      +  65
      +]
    • addedInput schema / properties / params / properties / age_years / maximum
      Added value: +120
    • addedInput schema / properties / params / properties / age_years / minimum
      Added value: +0
    • addedInput schema / properties / params / properties / alternative_diagnosis_more_likely
      Added value: +{
      +  "default": false,
      +  "description": "Alternative diagnosis at least as likely as DVT (-2 points in Wells DVT).",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / params / properties / bedridden_gt_3days_or_major_surgery
      Added value: +{
      +  "default": false,
      +  "description": "Bedridden >3 days or major surgery within 12 weeks requiring anesthesia (+1 in Wells DVT).",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / params / properties / biological_sex / examples
      Added value: +[
      +  "male"
      +]
    • addedInput schema / properties / params / properties / blood_urea_nitrogen_mg_dl / examples
      Added value: +[
      +  18
      +]
    • addedInput schema / properties / params / properties / blood_urea_nitrogen_mg_dl / maximum
      Added value: +200
    • addedInput schema / properties / params / properties / blood_urea_nitrogen_mg_dl / minimum
      Added value: +1
    • addedInput schema / properties / params / properties / calf_swelling_gt_3cm_diff
      Added value: +{
      +  "default": false,
      +  "description": "Calf swelling >3 cm compared to asymptomatic leg measured 10cm below tibial tuberosity (+1 in Wells DVT).",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / params / properties / clinical_signs_symptoms_dvt
      Added value: +{
      +  "default": false,
      +  "description": "Objective clinical signs and symptoms of DVT (+3 points in Wells PE).",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / params / properties / collateral_superficial_veins
      Added value: +{
      +  "default": false,
      +  "description": "Collateral superficial non-varicose veins (+1 in Wells DVT).",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / params / properties / confusion / default
      Added value: +false
    • addedInput schema / properties / params / properties / consciousness_level / default
      Added value: +"Alert"
    • addedInput schema / properties / params / properties / consciousness_level / examples
      Added value: +[
      +  "Alert"
      +]
    • addedInput schema / properties / params / properties / diastolic_bp / examples
      Added value: +[
      +  80
      +]
    • addedInput schema / properties / params / properties / diastolic_bp / maximum
      Added value: +200
    • addedInput schema / properties / params / properties / diastolic_bp / minimum
      Added value: +20
    • addedInput schema / properties / params / properties / dose_per_kg / examples
      Added value: +[
      +  15
      +]
    • addedInput schema / properties / params / properties / dose_per_kg / maximum
      Added value: +1000
    • addedInput schema / properties / params / properties / dose_per_kg / minimum
      Added value: +0.001
    • addedInput schema / properties / params / properties / dose_unit / default
      Added value: +"mg"
    • addedInput schema / properties / params / properties / dose_unit / examples
      Added value: +[
      +  "mg"
      +]
    • addedInput schema / properties / params / properties / entire_leg_swollen
      Added value: +{
      +  "default": false,
      +  "description": "Entire lower extremity swollen (+1 in Wells DVT).",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / params / properties / heart_rate_gt_100
      Added value: +{
      +  "default": false,
      +  "description": "Tachycardia with heart rate > 100 bpm (+1.5 points in Wells PE).",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / params / properties / height_cm / examples
      Added value: +[
      +  175
      +]
    • addedInput schema / properties / params / properties / height_cm / maximum
      Added value: +250
    • addedInput schema / properties / params / properties / height_cm / minimum
      Added value: +30
    • addedInput schema / properties / params / properties / hemoptysis
      Added value: +{
      +  "default": false,
      +  "description": "Hemoptysis / coughing up blood (+1 point in Wells PE).",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / params / properties / hx_diabetes / default
      Added value: +false
    • changedInput schema / properties / params / properties / hx_diabetes / description
      Previous value: -"History of diabetes mellitus (+1 point)."New value: +"History of diabetes mellitus (+1 point in CHA2DS2-VA)."
    • addedInput schema / properties / params / properties / hx_heart_failure / default
      Added value: +false
    • changedInput schema / properties / params / properties / hx_heart_failure / description
      Previous value: -"History of congestive heart failure / LV dysfunction (+1 point)."New value: +"History of congestive heart failure / LV dysfunction (+1 point in CHA2DS2-VA)."
    • addedInput schema / properties / params / properties / hx_hypertension / default
      Added value: +false
    • changedInput schema / properties / params / properties / hx_hypertension / description
      Previous value: -"History of hypertension or on antihypertensive therapy (+1 point)."New value: +"History of hypertension or on antihypertensive therapy (+1 point in CHA2DS2-VA)."
    • addedInput schema / properties / params / properties / hx_stroke_tia_thromboembolism / default
      Added value: +false
    • changedInput schema / properties / params / properties / hx_stroke_tia_thromboembolism / description
      Previous value: -"History of stroke, TIA, or thromboembolism (+2 points)."New value: +"History of stroke, TIA, or thromboembolism (+2 points in CHA2DS2-VA)."
    • addedInput schema / properties / params / properties / hx_vascular_disease / default
      Added value: +false
    • changedInput schema / properties / params / properties / hx_vascular_disease / description
      Previous value: -"History of prior MI, peripheral artery disease, or aortic plaque (+1 point)."New value: +"History of prior MI, peripheral artery disease, or aortic plaque (+1 point in CHA2DS2-VA)."
    • addedInput schema / properties / params / properties / hypertension_uncontrolled / default
      Added value: +false
    • addedInput schema / properties / params / properties / immobilization_or_surgery_past_4wks
      Added value: +{
      +  "default": false,
      +  "description": "Immobilization >= 3 days or surgery in past 4 weeks (+1.5 points in Wells PE).",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / params / properties / localized_tenderness_deep_veins
      Added value: +{
      +  "default": false,
      +  "description": "Localized tenderness along distribution of deep venous system (+1 in Wells DVT).",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / params / properties / max_single_adult_dose_mg / examples
      Added value: +[
      +  500
      +]
    • addedInput schema / properties / params / properties / max_single_adult_dose_mg / maximum
      Added value: +5000
    • addedInput schema / properties / params / properties / max_single_adult_dose_mg / minimum
      Added value: +0.1
    • addedInput schema / properties / params / properties / on_supplemental_oxygen / default
      Added value: +false
    • addedInput schema / properties / params / properties / oxygen_saturation / examples
      Added value: +[
      +  98
      +]
    • addedInput schema / properties / params / properties / oxygen_saturation / maximum
      Added value: +100
    • addedInput schema / properties / params / properties / oxygen_saturation / minimum
      Added value: +50
    • addedInput schema / properties / params / properties / paralysis_or_plaster_cast
      Added value: +{
      +  "default": false,
      +  "description": "Paralysis, paresis, or recent plaster immobilization of lower extremities (+1 in Wells DVT).",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / params / properties / pe_most_likely_or_equal_to_alt
      Added value: +{
      +  "default": false,
      +  "description": "PE is #1 diagnosis or equally likely as alternative (+3 points in Wells PE).",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / params / properties / pitting_edema_symptomatic_leg
      Added value: +{
      +  "default": false,
      +  "description": "Pitting edema confined to symptomatic leg (+1 in Wells DVT).",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / params / properties / previous_documented_dvt
      Added value: +{
      +  "default": false,
      +  "description": "Previously documented deep vein thrombosis (+1 in Wells DVT).",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / params / properties / previous_pe_or_dvt
      Added value: +{
      +  "default": false,
      +  "description": "Previous objectively documented PE or DVT (+1.5 points in Wells PE).",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / params / properties / pulse_rate / examples
      Added value: +[
      +  72
      +]
    • addedInput schema / properties / params / properties / pulse_rate / maximum
      Added value: +300
    • addedInput schema / properties / params / properties / pulse_rate / minimum
      Added value: +20
    • addedInput schema / properties / params / properties / respiratory_rate / examples
      Added value: +[
      +  18
      +]
    • addedInput schema / properties / params / properties / respiratory_rate / maximum
      Added value: +100
    • addedInput schema / properties / params / properties / respiratory_rate / minimum
      Added value: +0
    • addedInput schema / properties / params / properties / serum_creatinine / examples
      Added value: +[
      +  1.2
      +]
    • addedInput schema / properties / params / properties / serum_creatinine / maximum
      Added value: +30
    • addedInput schema / properties / params / properties / serum_creatinine / minimum
      Added value: +0.1
    • addedInput schema / properties / params / properties / serum_creatinine_mg_dl / examples
      Added value: +[
      +  1.2
      +]
    • addedInput schema / properties / params / properties / serum_creatinine_mg_dl / maximum
      Added value: +30
    • addedInput schema / properties / params / properties / serum_creatinine_mg_dl / minimum
      Added value: +0.1
    • addedInput schema / properties / params / properties / systolic_bp / examples
      Added value: +[
      +  120
      +]
    • addedInput schema / properties / params / properties / systolic_bp / maximum
      Added value: +300
    • addedInput schema / properties / params / properties / systolic_bp / minimum
      Added value: +40
    • addedInput schema / properties / params / properties / temperature_celsius / examples
      Added value: +[
      +  37
      +]
    • addedInput schema / properties / params / properties / temperature_celsius / maximum
      Added value: +45
    • addedInput schema / properties / params / properties / temperature_celsius / minimum
      Added value: +25
    • addedInput schema / properties / params / properties / unit / default
      Added value: +"mg/dL"
    • addedInput schema / properties / params / properties / unit / examples
      Added value: +[
      +  "mg/dL"
      +]
    • addedInput schema / properties / params / properties / weight_kg / examples
      Added value: +[
      +  20
      +]
    • addedInput schema / properties / params / properties / weight_kg / maximum
      Added value: +400
    • addedInput schema / properties / params / properties / weight_kg / minimum
      Added value: +1
    • addedOutput schema / required
      Added value: +[
      +  "calculator_id",
      +  "score",
      +  "unit",
      +  "interpretation_band",
      +  "clinical_recommendation",
      +  "guideline_citation",
      +  "warnings"
      +]
  2. Changed4 schema fields changedv0.1.1
    • addedInput schema / properties / calculator_id / description
      Added value: +"Identifier of the target clinical calculation engine to execute."
    • addedInput schema / properties / params / description
      Added value: +"Key-value clinical parameters, vital signs, laboratory values, and medical history booleans required for the specified calculator_id."
    • addedInput schema / properties / params / properties
      Added value: +{
      +  "actual_weight_kg": {
      +    "description": "Patient actual body weight in kilograms (required for Cockcroft-Gault CrCl).",
      +    "type": "number"
      +  },
      +  "age_years": {
      +    "description": "Patient age in years (0-120). Required by most calculators.",
      +    "type": "number"
      +  },
      +  "biological_sex": {
      +    "description": "Patient biological sex for gender-specific physiological equations.",
      +    "enum": [
      +      "male",
      +      "female"
      +    ],
      +    "type": "string"
      +  },
      +  "blood_urea_nitrogen_mg_dl": {
      +    "description": "Blood urea nitrogen in mg/dL (CURB-65: BUN > 19 mg/dL gives 1 point).",
      +    "type": "number"
      +  },
      +  "confusion": {
      +    "description": "New mental confusion / AMTS <= 8 for CURB-65 (+1 point).",
      +    "type": "boolean"
      +  },
      +  "consciousness_level": {
      +    "description": "Consciousness level: Alert (0) vs Confused/Voice/Pain/Unresponsive (3).",
      +    "enum": [
      +      "Alert",
      +      "CVPU"
      +    ],
      +    "type": "string"
      +  },
      +  "diastolic_bp": {
      +    "description": "Diastolic blood pressure in mmHg (CURB-65: <= 60 gives 1 point).",
      +    "type": "integer"
      +  },
      +  "dose_per_kg": {
      +    "description": "Target pediatric dose per kilogram (e.g. mg/kg).",
      +    "type": "number"
      +  },
      +  "dose_unit": {
      +    "description": "Unit of measurement for the dose (default: 'mg').",
      +    "type": "string"
      +  },
      +  "height_cm": {
      +    "description": "Patient height in centimeters (required for Mosteller BSA and Bedside Schwartz).",
      +    "type": "number"
      +  },
      +  "hx_diabetes": {
      +    "description": "History of diabetes mellitus (+1 point).",
      +    "type": "boolean"
      +  },
      +  "hx_heart_failure": {
      +    "description": "History of congestive heart failure / LV dysfunction (+1 point).",
      +    "type": "boolean"
      +  },
      +  "hx_hypertension": {
      +    "description": "History of hypertension or on antihypertensive therapy (+1 point).",
      +    "type": "boolean"
      +  },
      +  "hx_stroke_tia_thromboembolism": {
      +    "description": "History of stroke, TIA, or thromboembolism (+2 points).",
      +    "type": "boolean"
      +  },
      +  "hx_vascular_disease": {
      +    "description": "History of prior MI, peripheral artery disease, or aortic plaque (+1 point).",
      +    "type": "boolean"
      +  },
      +  "hypertension_uncontrolled": {
      +    "description": "Uncontrolled systolic BP >160 mmHg (+1 in HAS-BLED).",
      +    "type": "boolean"
      +  },
      +  "max_single_adult_dose_mg": {
      +    "description": "Maximum ceiling single adult dose in mg to prevent pediatric overdose.",
      +    "type": "number"
      +  },
      +  "on_supplemental_oxygen": {
      +    "description": "Whether the patient is receiving supplemental oxygen (+2 points in NEWS2).",
      +    "type": "boolean"
      +  },
      +  "oxygen_saturation": {
      +    "description": "SpO2 percentage (NEWS2 scale 1: >=96% is 0 points).",
      +    "type": "integer"
      +  },
      +  "pulse_rate": {
      +    "description": "Heart rate in beats per minute.",
      +    "type": "integer"
      +  },
      +  "respiratory_rate": {
      +    "description": "Breaths per minute for NEWS2 (normal: 12-20) or CURB-65 (>=30 gives 1 point).",
      +    "type": "integer"
      +  },
      +  "serum_creatinine": {
      +    "description": "Serum creatinine level for renal clearance and eGFR formulas.",
      +    "type": "number"
      +  },
      +  "serum_creatinine_mg_dl": {
      +    "description": "Serum creatinine concentration in mg/dL for Cockcroft-Gault or Schwartz formulas.",
      +    "type": "number"
      +  },
      +  "systolic_bp": {
      +    "description": "Systolic blood pressure in mmHg.",
      +    "type": "integer"
      +  },
      +  "temperature_celsius": {
      +    "description": "Body temperature in degrees Celsius.",
      +    "type": "number"
      +  },
      +  "unit": {
      +    "description": "Unit of measurement for serum creatinine (default: 'mg/dL').",
      +    "enum": [
      +      "mg/dL",
      +      "umol/L"
      +    ],
      +    "type": "string"
      +  },
      +  "weight_kg": {
      +    "description": "Patient weight in kilograms for pediatric dose or BSA calculation.",
      +    "type": "number"
      +  }
      +}
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "description": "Calculated score payload containing the numeric result, guideline risk classification, recommendation, and any safety warnings.",
      +  "properties": {
      +    "calculator_id": {
      +      "description": "Unique identifier of the executed clinical calculator engine.",
      +      "type": "string"
      +    },
      +    "clinical_recommendation": {
      +      "description": "Actionable, guideline-concordant therapeutic or monitoring recommendation.",
      +      "type": "string"
      +    },
      +    "guideline_citation": {
      +      "description": "Authoritative clinical practice guideline source citation (e.g. ESC 2024, AHA 2023, KDIGO 2021).",
      +      "type": "string"
      +    },
      +    "interpretation_band": {
      +      "description": "Evidence-grounded risk category, clinical stage, or severity interpretation.",
      +      "type": "string"
      +    },
      +    "reason": {
      +      "description": "Detailed explanation if calculation was safely refused due to out-of-bounds input.",
      +      "type": "string"
      +    },
      +    "recommendation": {
      +      "description": "Clinical safety recommendation following safe calculation refusal.",
      +      "type": "string"
      +    },
      +    "score": {
      +      "description": "Deterministic computed numerical score, clearance, or dose value.",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "status": {
      +      "description": "Execution status ('CALCULATION_REFUSED_SAFE_ABSTENTION' if physiological inputs exceed safe limits).",
      +      "type": "string"
      +    },
      +    "unit": {
      +      "description": "Unit of measurement for the computed score (e.g. 'points', 'mL/min/1.73m2', 'mg').",
      +      "type": "string"
      +    },
      +    "warnings": {
      +      "description": "Clinical cautionary notes, physiological boundary flags, or special population considerations.",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "type": "object"
      +}
  3. First observedv0.1.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, but the description adds traits annotations cannot express: stateless in-memory execution, no credentials or rate limits, physiological boundary validation producing a SafeCalculationRefusal status, and graceful handling of an unrecognized calculator_id. The refusal state is exactly the failure behavior an agent needs before calling.

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

Conciseness4/5

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

Purpose is front-loaded, then structured under explicit headings with bulleted domains, which is appropriate for a 12-engine dispatcher. The 'Output contract' bullet largely repeats the existing output schema, and a few parenthetical guideline citations could be trimmed, but nothing else is filler.

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

Completeness5/5

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

For a high-complexity nested-parameter tool with 12 enum-selected engines, the description supplies the domain grouping, the boundary-validation failure mode, and the routing rules — the pieces the schema and annotations cannot carry. Return values are covered by the output schema, so no further detail is needed.

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

Parameters4/5

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

With 100% schema coverage the baseline is 3, and the description earns above that by grouping the 40+ flat params into per-calculator domains (renal, cardiovascular/bleeding, acuity, pediatric, thromboembolism) — information the schema does not convey since it never says which params each calculator_id requires. It also flags the adult ceiling-cap behavior. It stops short of per-param detail, which the schema already supplies.

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

Purpose5/5

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

States a specific verb and resource — executes validated clinical risk calculators, renal clearance formulas, triage indices, and dosage adjustments — and pins the scope with 'deterministic arithmetic' versus acute triage, interaction screening, and terminology mapping. An agent can distinguish this from every named sibling without opening a schema.

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

Usage Guidelines5/5

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

Provides explicit 'When to use' and 'When NOT to use' sections, and each exclusion names the correct alternative (check_red_flags, check_drug_interactions, normalize_terminology) with the condition that selects it. This is the strongest form of routing guidance.

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