LIVE
Devine IBW
Compute Devine ideal body weight and 0.4 adjusted body weight from height, sex, and actual weight.
Markdown: /docs/ibw.md · Canonical: https://magentlab.com/docs/ibw
Not a medical device. Not a diagnosis, dose, or listing recommendation.
What it computes
Compute Devine ideal body weight and 0.4 adjusted body weight from height, sex, and actual weight.
When to use
When a label or protocol still cites Devine IBW or 0.4 AdjBW and an agent must not invent the kilograms.
When not to use
- Not a dosing recommendation. magent does not apply IBW to Cockcroft–Gault unless you call CrCl separately with that weight.
- Devine is undefined below 60 inches in the original table; this implementation still evaluates the linear formula.
Formula
IBW_kg = 50 (male) or 45.5 (female) + 2.3 * (height_in - 60); AdjBW_kg = IBW_kg + 0.4 * (TBW_kg - IBW_kg) when TBW > IBW, else TBW_kg
Citation
- Title
- Gentamicin therapy
- Authors
- Devine BJ
- Source
- Drug Intell Clin Pharm. 1974;8:650-655
- DOI
- none
Worked example
70 in male, 90 kg
Given:
height_in=70sex=maleweight_kg=90
- IBW = 50 + 2.3 * (70 - 60) = 73.0 kg
- TBW 90 > IBW 73, so AdjBW = 73 + 0.4 * (90 - 73) = 79.8 kg
Try
Opens the live endpoint. Unpaid browser requests show the paywall; agents should send Accept: application/json.
/api/calc/ibw_devine?height_in=70&sex=male&weight_kg=90
Full URL: https://api.magentlab.com/api/calc/ibw_devine?height_in=70&sex=male&weight_kg=90
x402 V2 curl
Expect HTTP 402 and a PAYMENT-REQUIRED
header until you retry with PAYMENT-SIGNATURE. Incomplete query params return HTTP
400 before any quote or charge.
curl -i -H "Accept: application/json" "https://api.magentlab.com/api/calc/ibw_devine?height_in=70&sex=male&weight_kg=90"
Cursor mcp.json
Intended config for @magent/mcp. This is not npm @x402/fetch
(a payment fetch wrapper).
{
"mcpServers": {
"magent": {
"args": [
"-y",
"@magent/mcp"
],
"command": "npx",
"env": {
"X402_PRIVATE_KEY": "0xYOUR_SPENDING_KEY"
}
}
}
}
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
height_cm |
number | optional | Height in centimeters. Provide height_cm or height_in. |
height_in |
number | optional | Height in inches. Devine uses inches: IBW adds 2.3 kg per inch over 60. |
sex |
string | required · female, male | Sex used by Devine (50 kg male, 45.5 kg female base). |
weight_kg |
number | optional | Actual total body weight in kilograms. Provide weight_kg or weight_lb. |
weight_lb |
number | optional | Actual total body weight in pounds. |
Response
| Field | Type | Description |
|---|---|---|
formula |
string | devine_ibw_adjbw |
formula_expression |
string | Exact expressions used |
sex |
string | female or male |
height_cm |
number | Normalized height in cm |
height_in |
number | Height in inches used by Devine |
actual_weight_kg |
number | Total body weight in kg |
ibw_kg |
number | Devine ideal body weight, 1 decimal |
adjbw_kg |
number | Adjusted body weight with 0.4 factor when TBW > IBW, else TBW |
adjbw_factor |
number | Always 0.4 |
citation |
object | Devine 1974 citation |
disclaimer |
string | Not-a-device notice |
Example JSON
Machine form of the same example. Frozen fixture. Not a live lookup.
{
"disclaimer": "Not a medical device. Deterministic published-formula or coded-ontology output for autonomous agents. A licensed clinician remains responsible for patient care and billing submissions.",
"citation": {
"authors": "Devine BJ",
"doi": null,
"id": "devine-1974",
"source": "Drug Intell Clin Pharm. 1974;8:650-655",
"title": "Gentamicin therapy"
},
"formula": "devine_ibw_adjbw",
"formula_expression": "IBW_kg = 50 (male) or 45.5 (female) + 2.3 * (height_in - 60); AdjBW_kg = IBW_kg + 0.4 * (TBW_kg - IBW_kg) when TBW > IBW, else TBW_kg",
"sex": "male",
"height_cm": 177.8,
"actual_weight_kg": 90.0,
"adjbw_factor": 0.4,
"adjbw_kg": 79.8,
"height_in": 70.0,
"ibw_kg": 73.0
}
Errors
| HTTP | Code | When |
|---|---|---|
| 400 | invalid_height |
height_cm (50-250) or height_in (20-98) is required Returned before settlement; you are not charged. |
| 400 | invalid_sex |
sex must be female or male Returned before settlement; you are not charged. |
| 400 | invalid_weight |
weight_kg (1-500) or weight_lb (2-1100) is required Returned before settlement; you are not charged. |
| 402 | payment_required |
Missing or invalid PAYMENT-SIGNATURE; decode the PAYMENT-REQUIRED header |
| 409 | payment_in_progress |
The same authorization nonce is already being settled; retry shortly |
| 429 | rate_limited |
Too many requests from this client |
| 503 | settlement_uncertain |
Settlement is unconfirmed; retry with the same PAYMENT-SIGNATURE |
| 503 | facilitator_unavailable |
Payment facilitator unavailable |
| 503 | facilitator_misconfigured |
Payment facilitator is not configured |
| 503 | facilitator_unauthorized |
Payment facilitator rejected credentials |
| 503 | ledger_unavailable |
Payment ledger unavailable |
| 503 | payment_unavailable |
Payment processing unavailable |
Related tools
- BMI — Compute Keys/Quetelet body-mass index from height and weight, plus a WHO adult band.
- Mosteller BSA — Compute Mosteller body surface area in m^2 from height and weight.
- Cockcroft–Gault CrCl — Compute Cockcroft–Gault creatinine clearance in mL/min using total body weight.
Also searched as
- Devine IBW
- adjusted body weight 0.4
- ideal body weight
- AdjBW
Payment
Required query parameters must be present and valid. Invalid params return HTTP 400 JSON before settlement. magent does not charge. Fix the params, then request a new 402 quote for that complete URL. Catalog misses (empty matches, found=false) are valid paid 200s. Unpaid valid requests return HTTP 402 with a base64
PAYMENT-REQUIRED
header. Retry the same URL with PAYMENT-SIGNATURE. Settlement completes before the
tool runs. Full handshake and shared payment errors: Payments.
Guarantees
- Invalid query parameters return HTTP 400 before settlement. You are not charged.
- Settlement finishes before the tool executes. Uncertain settlement fails closed (HTTP 503).
- Execution is timeout-bounded and concurrency-capped.
- Calculator inputs are not persisted. Request logs store path without query.