Skip to main content
Glama
Jambozx

OnlineCyberTools MCP (280+ filterable tools)

by Jambozx

math_bmi_calculator

Read-onlyIdempotent

Calculate Body Mass Index from height and weight in metric or imperial units, and get WHO weight category and healthy weight range. Also reverse-calculate target weight for a desired BMI, or compare two bodies.

Instructions

BMI Calculator (Metric / Imperial). Compute Body Mass Index from height and weight in metric (cm, kg) or imperial (inches or feet+inches, lb) units, returning the BMI value, the WHO category (severe/moderate/mild thinness, normal, overweight, obese class I-III), and the healthy weight range for that height. Set operation to compute for a single BMI, target-weight to reverse a target BMI into the weight needed at a given height, or compare to diff two bodies. Use this for body-composition math; use math_unit_converter for plain length or mass unit conversion, or math_percentage_calculator for generic percentages. Runs locally on the values you provide: read-only, non-destructive, contacts no external service, and is rate-limited (60 requests/minute for anonymous callers). Returns BMI, category code and label, an interpretation string, the normalized weight and height in both unit systems, and the healthy weight range.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
operationYesWhich calculation to run: compute for BMI from weight plus height, target-weight to reverse a target BMI into the weight needed at a height, or compare to diff two bodies supplied as a and b.
unitSystemNoUnit system for weight and height. Metric reads weight in kg and height in cm; imperial reads weight in lb and height in inches (or feet plus inches). Required for compute and target-weight.
weightNoBody weight. In metric it is kilograms (max 1000); in imperial it is pounds (max 2200). Must be greater than zero. Required for compute.
heightNoBody height. In metric it is centimetres (max 300); in imperial it is total inches (max 120), or pass an object with feet and inches keys. Must be greater than zero. Required for compute and target-weight.
targetBmiNoDesired BMI to solve the matching weight for at the given height. Required only when operation is target-weight.
aNoFirst body for the compare operation: an object of unitSystem, weight, and height. Required only when operation is compare.
bNoSecond body for the compare operation, same shape as a. Required only when operation is compare.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
operationNoThe operation that was executed, echoed back.
dataNoResult payload. Shape depends on the operation; the compute fields are listed here.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed15 schema fields changedv0.5.1
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / a
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "First body for the compare operation: an object of unitSystem, weight, and height. Required only when operation is compare.",
      +  "properties": {
      +    "height": {
      +      "description": "Height in cm (metric) or inches (imperial).",
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "unitSystem": {
      +      "description": "Unit system for this body weight and height.",
      +      "enum": [
      +        "metric",
      +        "imperial"
      +      ],
      +      "type": "string"
      +    },
      +    "weight": {
      +      "description": "Weight in kg (metric) or lb (imperial).",
      +      "minimum": 0,
      +      "type": "number"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / b
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Second body for the compare operation, same shape as a. Required only when operation is compare.",
      +  "properties": {
      +    "height": {
      +      "description": "Height in cm (metric) or inches (imperial).",
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "unitSystem": {
      +      "description": "Unit system for this body weight and height.",
      +      "enum": [
      +        "metric",
      +        "imperial"
      +      ],
      +      "type": "string"
      +    },
      +    "weight": {
      +      "description": "Weight in kg (metric) or lb (imperial).",
      +      "minimum": 0,
      +      "type": "number"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / height / description
      Added value: +"Body height. In metric it is centimetres (max 300); in imperial it is total inches (max 120), or pass an object with feet and inches keys. Must be greater than zero. Required for compute and target-weight."
    • addedInput schema / properties / height / minimum
      Added value: +0
    • addedInput schema / properties / operation / description
      Added value: +"Which calculation to run: compute for BMI from weight plus height, target-weight to reverse a target BMI into the weight needed at a height, or compare to diff two bodies supplied as a and b."
    • addedInput schema / properties / operation / enum
      Added value: +[
      +  "compute",
      +  "target-weight",
      +  "compare"
      +]
    • addedInput schema / properties / targetBmi
      Added value: +{
      +  "description": "Desired BMI to solve the matching weight for at the given height. Required only when operation is target-weight.",
      +  "maximum": 100,
      +  "minimum": 10,
      +  "type": "number"
      +}
    • addedInput schema / properties / unitSystem / description
      Added value: +"Unit system for weight and height. Metric reads weight in kg and height in cm; imperial reads weight in lb and height in inches (or feet plus inches). Required for compute and target-weight."
    • addedInput schema / properties / unitSystem / enum
      Added value: +[
      +  "metric",
      +  "imperial"
      +]
    • addedInput schema / properties / weight / description
      Added value: +"Body weight. In metric it is kilograms (max 1000); in imperial it is pounds (max 2200). Must be greater than zero. Required for compute."
    • addedInput schema / properties / weight / minimum
      Added value: +0
    • changedInput schema / properties / weight / type
      Previous value: -"integer"New value: +"number"
    • changedInput schema / required
      Previous value: -[
      -  "operation",
      -  "unitSystem",
      -  "weight",
      -  "height"
      -]New value: +[
      +  "operation"
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "data": {
      +      "description": "Result payload. Shape depends on the operation; the compute fields are listed here.",
      +      "properties": {
      +        "bmi": {
      +          "description": "Body Mass Index, rounded to 2 decimals.",
      +          "type": "number"
      +        },
      +        "category": {
      +          "description": "Human-readable WHO category label, for example Normal weight or Obese class I.",
      +          "type": "string"
      +        },
      +        "categoryCode": {
      +          "description": "Machine code for the category (severe_thin, moderate_thin, mild_thin, normal, overweight, obese_i, obese_ii, obese_iii).",
      +          "type": "string"
      +        },
      +        "healthyWeightRange": {
      +          "description": "Weight band that maps to a normal BMI (18.5 to 24.9) at this height.",
      +          "properties": {
      +            "maxKg": {
      +              "description": "Upper healthy weight bound in kilograms.",
      +              "type": "number"
      +            },
      +            "maxLb": {
      +              "description": "Upper healthy weight bound in pounds.",
      +              "type": "number"
      +            },
      +            "minKg": {
      +              "description": "Lower healthy weight bound in kilograms.",
      +              "type": "number"
      +            },
      +            "minLb": {
      +              "description": "Lower healthy weight bound in pounds.",
      +              "type": "number"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "heightIn": {
      +          "description": "Normalized height in inches, rounded to 2 decimals.",
      +          "type": "number"
      +        },
      +        "heightM": {
      +          "description": "Normalized height in metres, rounded to 2 decimals.",
      +          "type": "number"
      +        },
      +        "interpretation": {
      +          "description": "Plain-language interpretation of the BMI and category, with the underlying range.",
      +          "type": "string"
      +        },
      +        "unitSystem": {
      +          "description": "Unit system used for the inputs (metric or imperial).",
      +          "type": "string"
      +        },
      +        "weightKg": {
      +          "description": "Normalized weight in kilograms, rounded to 1 decimal.",
      +          "type": "number"
      +        },
      +        "weightLb": {
      +          "description": "Normalized weight in pounds, rounded to 1 decimal.",
      +          "type": "number"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "operation": {
      +      "description": "The operation that was executed, echoed back.",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observedv0.1.0

TDQS

A5/5.0
Behavior5/5

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

The description adds valuable context beyond annotations: 'Runs locally on the values you provide: read-only, non-destructive, contacts no external service, and is rate-limited (60 requests/minute for anonymous callers).' Annotations already declared readOnlyHint=true, destructiveHint=false, idempotentHint=true, but the description enriches this with specificity.

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

Conciseness5/5

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

The description is densely packed with useful information yet remains concise. It front-loads the core function, then details operations, usage guidelines, and returned data. Every sentence earns its place without redundancy.

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

Completeness5/5

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

Given the tool's complexity (7 parameters, nested objects, three operations, and an output schema), the description covers all necessary details: operation variants, unit system handling, expected inputs for each mode, and an overview of the return values (BMI, category, interpretation, healthy weight range). The presence of an output schema doesn't require further description of return structure.

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

Parameters5/5

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

Schema coverage is 100%, but the description adds meaning by explaining each parameter's role in different operations (e.g., 'Required for compute', 'Required only when operation is target-weight'). It clarifies that 'height' can be inches or an object with feet/inches, and describes the a/b objects for compare.

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?

The description clearly states the tool computes BMI from height and weight in metric or imperial units, returns WHO category and healthy weight range, and lists three operations (compute, target-weight, compare). It differentiates from siblings by specifically mentioning when to use math_unit_converter or math_percentage_calculator.

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?

Explicitly says when to use this tool for body-composition math and provides clear alternatives ('use math_unit_converter for plain length or mass unit conversion, or math_percentage_calculator for generic percentages'). Also notes it runs locally, is read-only, non-destructive, and rate-limited.

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

Deploy Server

Other Tools