Kidney · LIVE
R.E.N.A.L. nephrometry
Sum the Kutikov 2009 R.E.N.A.L. nephrometry score for a renal mass from four caller-assigned published item points (radius, exophytic/endophytic, nearness, location) and return the integer total (4–12) plus anterior and hilar descriptors. Does not return complexity bands.
Markdown: /docs/renal-nephrometry.md · Canonical: https://magentlab.com/docs/renal-nephrometry
Not a medical device. Not a diagnosis, dose, or listing recommendation.
What it computes
Sum the Kutikov 2009 R.E.N.A.L. nephrometry score for a renal mass from four caller-assigned published item points (radius, exophytic/endophytic, nearness, location) and return the integer total (4–12) plus anterior and hilar descriptors. Does not return complexity bands.
When to use
When an agent has already assigned Kutikov 2009 radius, exophytic/endophytic properties, nearness to collecting system or sinus, anterior/posterior descriptor, polar-line location, and hilar abutment for a renal mass and needs the published integer sum, not a nephrectomy order, CT read, PADUA, or STONE nephrolithometry.
When not to use
- Not a medical device. magent does not measure diameter, exophytic fraction, nearness, polar lines, or hilar abutment. Radius, exophytic, nearness, anterior, location, and hilar are caller-assigned.
- Not a nephrectomy order. The score is not a command to operate, choose partial versus radical nephrectomy, or select a surgical approach.
- Not PADUA and not Okhunov 2013 STONE nephrolithometry. This tool is Kutikov 2009 R.E.N.A.L. nephrometry for renal masses.
- Kutikov 2009 Table 1 scores R, E, N, and L (1–3 each). Anterior (a/p/x) and hilar suffix h are descriptors, not points. magent returns score and max_score only; it does not return low/moderate/high complexity bands.
Formula
RENAL = radius (le_4 1, gt_4_lt_7 2, ge_7 3) + exophytic (ge_50 1, lt_50 2, entirely_endophytic 3) + nearness (ge_7 1, gt_4_lt_7 2, le_4 3) + location (entirely_polar 1, crosses_polar 2, gt_50_midline_or_between 3); anterior a|p|x 0 points; hilar suffix h boolean 0 points; Kutikov 2009 R.E.N.A.L. Nephrometry; sum 4-12; no published complexity bands
Citation
- Authors
- Kutikov A, Uzzo RG
- Source
- J Urol. 2009;182(3):844-853
Worked example
All minimum grades
Given:
anterior=aexophytic=ge_50hilar=falselocation=entirely_polarnearness=ge_7radius=le_4
- le_4 1 + ge_50 1 + ge_7 1 + entirely_polar 1; anterior a; hilar false
- Score = 4 (max 12); renal_string 4a. No complexity band. Not a nephrectomy order
All maximum grades
Given:
anterior=xexophytic=entirely_endophytichilar=truelocation=gt_50_midline_or_betweennearness=le_4radius=ge_7
- ge_7 3 + entirely_endophytic 3 + le_4 3 + gt_50_midline_or_between 3; anterior x; hilar true
- Score = 12 (max 12); renal_string 12xh. No complexity band. Not a nephrectomy order
Also searched as
- RENAL score
- R.E.N.A.L. nephrometry
- Kutikov nephrometry
- renal tumor nephrometry
- Kutikov 2009
- RENAL nephrometry score
- renal mass score
- nephrometry score
Try
Opens the live endpoint. Unpaid browser requests show the paywall; agents should send Accept: application/json.
Full URL: https://api.magentlab.com/api/calc/renal_nephrometry?radius=le_4&exophytic=ge_50&nearness=ge_7&anterior=a&location=entirely_polar&hilar=false
Call
Expect HTTP 402 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/renal_nephrometry?radius=le_4&exophytic=ge_50&nearness=ge_7&anterior=a&location=entirely_polar&hilar=false"
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
radius |
string | required · le_4, gt_4_lt_7, ge_7 | Caller-assigned maximal diameter in cm (Kutikov 2009 R, radius). le_4 (≤4 cm) scores 1; gt_4_lt_7 (>4 but <7 cm) scores 2; ge_7 (≥7 cm) scores 3. magent does not measure diameter or read CT. |
exophytic |
string | required · ge_50, lt_50, entirely_endophytic | Caller-assigned exophytic/endophytic properties (Kutikov 2009 E). ge_50 (≥50% exophytic) scores 1; lt_50 (<50% exophytic) scores 2; entirely_endophytic (completely endophytic) scores 3. magent does not read CT. |
nearness |
string | required · ge_7, gt_4_lt_7, le_4 | Caller-assigned nearness of the deepest portion of the mass to the collecting system or sinus in mm (Kutikov 2009 N). ge_7 (≥7 mm) scores 1; gt_4_lt_7 (>4 but <7 mm) scores 2; le_4 (≤4 mm) scores 3. magent does not measure nearness or read CT. |
anterior |
string | required · a, p, x | Caller-assigned anterior/posterior descriptor (Kutikov 2009 A). a (anterior), p (posterior), or x (indeterminate). 0 points; echoed as anterior. magent does not read CT. |
location |
string | required · entirely_polar, crosses_polar, gt_50_midline_or_between | Caller-assigned location relative to polar lines (Kutikov 2009 L). entirely_polar (entirely above the upper polar line or entirely below the lower polar line) scores 1; crosses_polar (mass crosses a polar line) scores 2; gt_50_midline_or_between (>50% of the mass is across a polar line, or the mass crosses the axial renal midline, or the mass is entirely between the polar lines) scores 3. magent does not read CT. |
hilar |
boolean | required | Caller-assigned hilar suffix (Kutikov 2009). true means the mass abuts the main renal artery or vein (suffix h). Boolean, not points. magent does not read CT. |
Bulk (POST)
POST the same path with a JSON items array. The first item is the GET unit; each additional item is $0.002. Invalid items return HTTP 400 before settlement.
- 1 to 25 items. Each item uses the same keys as the GET query parameters.
- POST of 1 item costs the same as GET. Lists longer than 25: chunk into multiple POSTs. Extra items still execute; do not pad dummy rows.
- The first invalid item fails the whole request (index in the 400 JSON). You are not charged.
- HTTP 200 is {count, path, items}. Each items[i] is the GET 200 body for that row.
- Catalog misses (empty matches, found=false) stay paid 200s inside that slot.
- x402 resource URL is this path plus n and body_sha256. Browsers that prefer text/html get the same paywall as GET; Pay retries POST with the same items.
Example request (fixture)
{
"items": [
{
"anterior": "a",
"exophytic": "ge_50",
"hilar": "false",
"location": "entirely_polar",
"nearness": "ge_7",
"radius": "le_4"
},
{
"anterior": "a",
"exophytic": "ge_50",
"hilar": "false",
"location": "entirely_polar",
"nearness": "ge_7",
"radius": "le_4"
}
]
}
Opens a two-item fixture on the API host. Unpaid browsers get the same MetaMask paywall as GET; Pay retries POST with those items.
Example 200 (fixture)
{
"count": 2,
"path": "/api/calc/renal_nephrometry",
"items": [
{
"location": "entirely_polar",
"r": 1,
"l": 1,
"components": [
{
"value": "le_4",
"factor": "radius",
"points": 1,
"present": true
},
{
"value": "ge_50",
"factor": "exophytic",
"points": 1,
"present": true
},
{
"value": "ge_7",
"factor": "nearness",
"points": 1,
"present": true
},
{
"value": "entirely_polar",
"factor": "location",
"points": 1,
"present": true
}
],
"n": 1,
"e": 1,
"radius": "le_4",
"disclaimer": "Not a medical device. Deterministic published-formula or published-code output for autonomous agents. A licensed clinician remains responsible for patient care and billing submissions.",
"citation": {
"authors": "Kutikov A, Uzzo RG",
"doi": "10.1016/j.juro.2009.05.035",
"id": "kutikov-2009",
"pmid": "19616235",
"source": "J Urol. 2009;182(3):844-853",
"title": "The R.E.N.A.L. Nephrometry Score: A Comprehensive Standardized System for Quantitating Renal Tumor Size, Location and Depth"
},
"formula": "renal_nephrometry",
"formula_expression": "RENAL = radius (le_4 1, gt_4_lt_7 2, ge_7 3) + exophytic (ge_50 1, lt_50 2, entirely_endophytic 3) + nearness (ge_7 1, gt_4_lt_7 2, le_4 3) + location (entirely_polar 1, crosses_polar 2, gt_50_midline_or_between 3); anterior a|p|x 0 points; hilar suffix h boolean 0 points; Kutikov 2009 R.E.N.A.L. Nephrometry; sum 4-12; no published complexity bands",
"max_score": 12,
"score": 4,
"anterior": "a",
"exophytic": "ge_50",
"hilar": false,
"nearness": "ge_7",
"renal_string": "4a"
},
{
"location": "entirely_polar",
"r": 1,
"l": 1,
"components": [
{
"value": "le_4",
"factor": "radius",
"points": 1,
"present": true
},
{
"value": "ge_50",
"factor": "exophytic",
"points": 1,
"present": true
},
{
"value": "ge_7",
"factor": "nearness",
"points": 1,
"present": true
},
{
"value": "entirely_polar",
"factor": "location",
"points": 1,
"present": true
}
],
"n": 1,
"e": 1,
"radius": "le_4",
"disclaimer": "Not a medical device. Deterministic published-formula or published-code output for autonomous agents. A licensed clinician remains responsible for patient care and billing submissions.",
"citation": {
"authors": "Kutikov A, Uzzo RG",
"doi": "10.1016/j.juro.2009.05.035",
"id": "kutikov-2009",
"pmid": "19616235",
"source": "J Urol. 2009;182(3):844-853",
"title": "The R.E.N.A.L. Nephrometry Score: A Comprehensive Standardized System for Quantitating Renal Tumor Size, Location and Depth"
},
"formula": "renal_nephrometry",
"formula_expression": "RENAL = radius (le_4 1, gt_4_lt_7 2, ge_7 3) + exophytic (ge_50 1, lt_50 2, entirely_endophytic 3) + nearness (ge_7 1, gt_4_lt_7 2, le_4 3) + location (entirely_polar 1, crosses_polar 2, gt_50_midline_or_between 3); anterior a|p|x 0 points; hilar suffix h boolean 0 points; Kutikov 2009 R.E.N.A.L. Nephrometry; sum 4-12; no published complexity bands",
"max_score": 12,
"score": 4,
"anterior": "a",
"exophytic": "ge_50",
"hilar": false,
"nearness": "ge_7",
"renal_string": "4a"
}
]
}
Response
| Field | Type | Description |
|---|---|---|
formula |
string | renal_nephrometry |
formula_expression |
string | Exact expression used |
score |
integer | Kutikov 2009 R.E.N.A.L. nephrometry integer sum 4-12 (R+E+N+L). Anterior and hilar are not added. Not a nephrectomy order. No published complexity band. |
max_score |
integer | 12 |
r |
integer | Radius points 1-3 (Kutikov 2009 R) |
e |
integer | Exophytic/endophytic points 1-3 (Kutikov 2009 E) |
n |
integer | Nearness points 1-3 (Kutikov 2009 N) |
l |
integer | Location points 1-3 (Kutikov 2009 L) |
radius |
string | Caller-assigned radius used (le_4, gt_4_lt_7, or ge_7) |
exophytic |
string | Caller-assigned exophytic used (ge_50, lt_50, or entirely_endophytic) |
nearness |
string | Caller-assigned nearness used (ge_7, gt_4_lt_7, or le_4) |
anterior |
string | Caller-assigned anterior descriptor used (a, p, or x). 0 points. |
location |
string | Caller-assigned location used (entirely_polar, crosses_polar, or gt_50_midline_or_between) |
hilar |
boolean | true when the mass abuts the main renal artery or vein (suffix h). Not scored. |
renal_string |
string | Kutikov 2009 notation: {score}{anterior} plus h if hilar (for example 4a or 12xh) |
components |
array | Per-item Kutikov 2009 R, E, N, L points |
citation |
object | Kutikov and Uzzo J Urol 2009 citation |
disclaimer |
string | Not-a-device notice |
Example JSON
Machine form of the same example. Frozen fixture. Not a live lookup.
{
"location": "entirely_polar",
"r": 1,
"l": 1,
"components": [
{
"value": "le_4",
"factor": "radius",
"points": 1,
"present": true
},
{
"value": "ge_50",
"factor": "exophytic",
"points": 1,
"present": true
},
{
"value": "ge_7",
"factor": "nearness",
"points": 1,
"present": true
},
{
"value": "entirely_polar",
"factor": "location",
"points": 1,
"present": true
}
],
"n": 1,
"e": 1,
"radius": "le_4",
"disclaimer": "Not a medical device. Deterministic published-formula or published-code output for autonomous agents. A licensed clinician remains responsible for patient care and billing submissions.",
"citation": {
"authors": "Kutikov A, Uzzo RG",
"doi": "10.1016/j.juro.2009.05.035",
"id": "kutikov-2009",
"pmid": "19616235",
"source": "J Urol. 2009;182(3):844-853",
"title": "The R.E.N.A.L. Nephrometry Score: A Comprehensive Standardized System for Quantitating Renal Tumor Size, Location and Depth"
},
"formula": "renal_nephrometry",
"formula_expression": "RENAL = radius (le_4 1, gt_4_lt_7 2, ge_7 3) + exophytic (ge_50 1, lt_50 2, entirely_endophytic 3) + nearness (ge_7 1, gt_4_lt_7 2, le_4 3) + location (entirely_polar 1, crosses_polar 2, gt_50_midline_or_between 3); anterior a|p|x 0 points; hilar suffix h boolean 0 points; Kutikov 2009 R.E.N.A.L. Nephrometry; sum 4-12; no published complexity bands",
"max_score": 12,
"score": 4,
"anterior": "a",
"exophytic": "ge_50",
"hilar": false,
"nearness": "ge_7",
"renal_string": "4a"
}
Client errors (HTTP 400)
Invalid params return 400 without charge. Shared HTTP 402 and 503 meanings: Payments.
| HTTP | Code | When |
|---|---|---|
| 400 | invalid_renal_nephrometry |
radius must be le_4, gt_4_lt_7, or ge_7; exophytic must be ge_50, lt_50, or entirely_endophytic; nearness must be ge_7, gt_4_lt_7, or le_4; anterior must be a, p, or x; location must be entirely_polar, crosses_polar, or gt_50_midline_or_between (Kutikov 2009 R.E.N.A.L.). Returned before settlement; you are not charged. |
| 400 | invalid_flag |
boolean clinical flags must be true or false Returned before settlement; you are not charged. |
| 400 | invalid_items |
POST body must be a JSON object with only an items array Returned before settlement; you are not charged. |
| 400 | invalid_item_count |
items must be an array of 1 to 25 objects Returned before settlement; you are not charged. |
| 400 | invalid_item |
each items entry must be a JSON object Returned before settlement; you are not charged. |
Related tools
- STONE nephrolithometry — Sum the Okhunov 2013 STONE nephrolithometry score for kidney calculi (PCNL) from five caller-assigned published item points and return the integer total (5–13). Does not return stone-free-rate bands.
Payment
Unpaid requests return HTTP 402 even if query parameters or POST items are missing or invalid, so CDP and agents can index the path. After a PAYMENT-SIGNATURE, 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. HTTP 503 is not a new quote: retry the same PAYMENT-SIGNATURE. Full handshake
and shared payment errors: Payments.
Stdio MCP: /docs/mcp.
Guarantees
- HTTP 402 is unpaid, including a missing query. After PAYMENT-SIGNATURE, invalid parameters return HTTP 400 before settlement. You are not charged. HTTP 402 never includes the tool JSON.
- exact: settlement finishes before the tool (paymentFlow upfront). batch-settlement: verify/deposit before the tool; chargedCumulativeAmount commits after HTTP 2xx. Uncertain or failed settlement fails closed (HTTP 503). Retry the same PAYMENT-SIGNATURE.
- HTTP 402 is unpaid only. Do not sign a second authorization because of a 503.
- Execution is timeout-bounded and concurrency-capped.
- Calculator inputs are stored encrypted for allowlisted operators (Magent Console). They are not in public logs, SSH lookups, catalog, or rollups. Request logs store path without query.