# CARG chemotherapy toxicity (Hurria)

CARG-TT

Status: LIVE
Price: $0.005 USDC
`GET /api/calc/carg_tt`
HTML: https://magentlab.com/docs/carg-tt
Markdown: https://magentlab.com/docs/carg-tt.md

Not a medical device. Not a diagnosis, dose, or listing recommendation.

## What it computes

Sum Hurria 2011 Table 5 CARG chemotherapy-toxicity weights and return low (0-5, 30%), intermediate (6-9, 52%), or high (10-19, 83%) grade 3-5 toxicity risk.

## When to use

When an agent needs the published Hurria 2011 CARG point total and must not invent a chemotherapy order, invert GI/GU, or substitute the 2016 revision or CRASH.

## When not to use

- Not a medical device and not a chemotherapy order. magent does not examine the patient or write a regimen.
- Hurria 2011 Table 5 only. Not the CARG-TT 2016 revision and not CRASH.
- Derived in patients ≥65; magent still applies the ≥72 point rule at any accepted age (18-120).
- GI or GU cancer is +2 when present (Hurria 2011 Table 5). Lung, breast, GYN, and other cancers are 0. This is not inverted.
- jelliffe_crcl_ml_min is the published Jelliffe ideal-weight creatinine clearance as assigned by the caller. magent does not compute Jelliffe from creatinine, age, or weight.
- Hemoglobin uses male <11 g/dL or female <10 g/dL. Hearing, falls, MOS walking, IADL medications, and MOS social activity are caller-assigned flags.
- Risk groups are the derivation bands: 0-5 low (30%), 6-9 intermediate (52%), 10-19 high (83%). Do not use 10-23.

## Formula

```
CARG-TT = age_ge_72 (2) + gi_or_gu (2) + standard_dose (2) + polychemotherapy (2) + hemoglobin_low (3; male <11 g/dL or female <10 g/dL) + jelliffe_crcl_lt_34 (3) + hearing_fair_or_worse (2) + falls_last_6_months (3) + limited_walking_one_block (2) + needs_help_with_medications (1) + decreased_social_activity (1); Hurria 2011 Table 5; max 19; 0-5 low 30%, 6-9 intermediate 52%, 10-19 high 83%; GI/GU is +2 when present (not inverted); not CARG-TT 2016; not CRASH
```

## Citation

[Predicting chemotherapy toxicity in older adults with cancer: a prospective multicenter study](https://doi.org/10.1200/JCO.2011.34.7625)
Hurria A, Togawa K, Mohile SG, et al.
J Clin Oncol. 2011;29(25):3457-3465
DOI: [10.1200/JCO.2011.34.7625](https://doi.org/10.1200/JCO.2011.34.7625)

## Worked example

### Age 75, GI/GU, standard polychemotherapy

Given: `age=75, decreased_social_activity=false, falls_last_6_months=false, gi_or_gu=true, hearing_fair_or_worse=false, hemoglobin_g_dl=12, jelliffe_crcl_ml_min=50, limited_walking_one_block=false, needs_help_with_medications=false, polychemotherapy=true, sex=male, standard_dose=true`

1. Age ≥72 → 2; GI or GU → 2; standard dose → 2; polychemotherapy → 2
2. Hemoglobin 12 g/dL male, Jelliffe 50 mL/min, remaining flags false → 0
3. Score = 8 (max 19); risk_group = intermediate; grade_3_to_5_toxicity_percent = 52


### Age 65, no Table 5 factors

Given: `age=65, decreased_social_activity=false, falls_last_6_months=false, gi_or_gu=false, hearing_fair_or_worse=false, hemoglobin_g_dl=12, jelliffe_crcl_ml_min=50, limited_walking_one_block=false, needs_help_with_medications=false, polychemotherapy=false, sex=male, standard_dose=false`

1. Age 65 <72 → 0; GI/GU false → 0; remaining Table 5 items absent → 0
2. Score = 0 (max 19); risk_group = low; grade_3_to_5_toxicity_percent = 30


## Also searched as

- CARG chemotherapy toxicity
- Hurria chemotherapy toxicity score
- CARG-TT
- Cancer and Aging Research Group
- chemotherapy toxicity older adults
- CARG toxicity tool
- Hurria 2011 CARG

## Parameters

- `age` (integer, required): Age in years (18-120). Hurria 2011 Table 5: ≥72 scores 2. Derived in patients ≥65; magent still applies the ≥72 rule at any accepted age.
- `gi_or_gu` (boolean, required): GI or GU cancer as assigned by the caller (Hurria 2011 Table 5). true scores 2. Lung, breast, GYN, and other cancers are 0. This is a risk factor present (+2), not inverted. magent does not assign cancer type from histology text.
- `standard_dose` (boolean, required): Standard chemotherapy dose as assigned by the caller (Hurria 2011 Table 5). true scores 2. Dose-reduced is 0. magent does not read a chemo order.
- `polychemotherapy` (boolean, required): Polychemotherapy as assigned by the caller (Hurria 2011 Table 5). true scores 2.
- `hemoglobin_g_dl` (number, required): Hemoglobin in g/dL (3-22). Male <11 or female <10 scores 3 (Hurria 2011 Table 5). 11.0 male and 10.0 female do not score.
- `sex` (string, required): Sex used for the hemoglobin cutoff (female or male). Male <11 g/dL or female <10 g/dL scores 3.
- `jelliffe_crcl_ml_min` (number, required): Jelliffe ideal-weight creatinine clearance in mL/min as assigned by the caller (1-300). <34 scores 3 (Hurria 2011 Table 5). 34 does not score. magent does not compute Jelliffe.
- `hearing_fair_or_worse` (boolean, required): Hearing fair or worse as assigned by the caller (Hurria 2011 Table 5). true scores 2. magent does not examine hearing.
- `falls_last_6_months` (boolean, required): ≥1 fall in the last 6 months as assigned by the caller (Hurria 2011 Table 5). true scores 3. magent does not take a fall history.
- `limited_walking_one_block` (boolean, required): MOS walking 1 block somewhat limited or limited a lot as assigned by the caller (Hurria 2011 Table 5). true scores 2. magent does not administer MOS.
- `needs_help_with_medications` (boolean, required): IADL taking medications some help or unable as assigned by the caller (Hurria 2011 Table 5). true scores 1. magent does not administer IADL.
- `decreased_social_activity` (boolean, required): MOS decreased social activity limited at least sometimes as assigned by the caller (Hurria 2011 Table 5). true scores 1. magent does not administer MOS.

## 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.

Method: `POST /api/calc/carg_tt`
Max items: 25
Price: unit_amount + extra_item_amount * (n - 1) (unit 5000 atomic, extra 2000 atomic)
Status: PREVIEW

- 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:

```json
{
  "items": [
    {
      "age": "75",
      "decreased_social_activity": "false",
      "falls_last_6_months": "false",
      "gi_or_gu": "true",
      "hearing_fair_or_worse": "false",
      "hemoglobin_g_dl": "12",
      "jelliffe_crcl_ml_min": "50",
      "limited_walking_one_block": "false",
      "needs_help_with_medications": "false",
      "polychemotherapy": "true",
      "sex": "male",
      "standard_dose": "true"
    },
    {
      "age": "75",
      "decreased_social_activity": "false",
      "falls_last_6_months": "false",
      "gi_or_gu": "true",
      "hearing_fair_or_worse": "false",
      "hemoglobin_g_dl": "12",
      "jelliffe_crcl_ml_min": "50",
      "limited_walking_one_block": "false",
      "needs_help_with_medications": "false",
      "polychemotherapy": "true",
      "sex": "male",
      "standard_dose": "true"
    }
  ]
}
```

Human paywall (two-item fixture): https://api.magentlab.com/paywall/bulk/carg-tt

Example 200:

```json
{
  "count": 2,
  "path": "/api/calc/carg_tt",
  "items": [
    {
      "components": [
        {
          "value": 75,
          "factor": "age_ge_72",
          "points": 2,
          "present": true
        },
        {
          "factor": "gi_or_gu",
          "points": 2,
          "present": true
        },
        {
          "factor": "standard_dose",
          "points": 2,
          "present": true
        },
        {
          "factor": "polychemotherapy",
          "points": 2,
          "present": true
        },
        {
          "value": {
            "sex": "male",
            "hemoglobin_g_dl": 12.0
          },
          "factor": "hemoglobin_low",
          "points": 0,
          "present": false
        },
        {
          "value": 50.0,
          "factor": "jelliffe_crcl_lt_34",
          "points": 0,
          "present": false
        },
        {
          "factor": "hearing_fair_or_worse",
          "points": 0,
          "present": false
        },
        {
          "factor": "falls_last_6_months",
          "points": 0,
          "present": false
        },
        {
          "factor": "limited_walking_one_block",
          "points": 0,
          "present": false
        },
        {
          "factor": "needs_help_with_medications",
          "points": 0,
          "present": false
        },
        {
          "factor": "decreased_social_activity",
          "points": 0,
          "present": false
        }
      ],
      "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": "Hurria A, Togawa K, Mohile SG, et al.",
        "doi": "10.1200/JCO.2011.34.7625",
        "id": "hurria-2011",
        "pmid": "21810685",
        "source": "J Clin Oncol. 2011;29(25):3457-3465",
        "title": "Predicting chemotherapy toxicity in older adults with cancer: a prospective multicenter study"
      },
      "formula": "carg_tt",
      "formula_expression": "CARG-TT = age_ge_72 (2) + gi_or_gu (2) + standard_dose (2) + polychemotherapy (2) + hemoglobin_low (3; male <11 g/dL or female <10 g/dL) + jelliffe_crcl_lt_34 (3) + hearing_fair_or_worse (2) + falls_last_6_months (3) + limited_walking_one_block (2) + needs_help_with_medications (1) + decreased_social_activity (1); Hurria 2011 Table 5; max 19; 0-5 low 30%, 6-9 intermediate 52%, 10-19 high 83%; GI/GU is +2 when present (not inverted); not CARG-TT 2016; not CRASH",
      "max_score": 19,
      "score": 8,
      "risk_group": "intermediate",
      "grade_3_to_5_toxicity_percent": 52
    },
    {
      "components": [
        {
          "value": 75,
          "factor": "age_ge_72",
          "points": 2,
          "present": true
        },
        {
          "factor": "gi_or_gu",
          "points": 2,
          "present": true
        },
        {
          "factor": "standard_dose",
          "points": 2,
          "present": true
        },
        {
          "factor": "polychemotherapy",
          "points": 2,
          "present": true
        },
        {
          "value": {
            "sex": "male",
            "hemoglobin_g_dl": 12.0
          },
          "factor": "hemoglobin_low",
          "points": 0,
          "present": false
        },
        {
          "value": 50.0,
          "factor": "jelliffe_crcl_lt_34",
          "points": 0,
          "present": false
        },
        {
          "factor": "hearing_fair_or_worse",
          "points": 0,
          "present": false
        },
        {
          "factor": "falls_last_6_months",
          "points": 0,
          "present": false
        },
        {
          "factor": "limited_walking_one_block",
          "points": 0,
          "present": false
        },
        {
          "factor": "needs_help_with_medications",
          "points": 0,
          "present": false
        },
        {
          "factor": "decreased_social_activity",
          "points": 0,
          "present": false
        }
      ],
      "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": "Hurria A, Togawa K, Mohile SG, et al.",
        "doi": "10.1200/JCO.2011.34.7625",
        "id": "hurria-2011",
        "pmid": "21810685",
        "source": "J Clin Oncol. 2011;29(25):3457-3465",
        "title": "Predicting chemotherapy toxicity in older adults with cancer: a prospective multicenter study"
      },
      "formula": "carg_tt",
      "formula_expression": "CARG-TT = age_ge_72 (2) + gi_or_gu (2) + standard_dose (2) + polychemotherapy (2) + hemoglobin_low (3; male <11 g/dL or female <10 g/dL) + jelliffe_crcl_lt_34 (3) + hearing_fair_or_worse (2) + falls_last_6_months (3) + limited_walking_one_block (2) + needs_help_with_medications (1) + decreased_social_activity (1); Hurria 2011 Table 5; max 19; 0-5 low 30%, 6-9 intermediate 52%, 10-19 high 83%; GI/GU is +2 when present (not inverted); not CARG-TT 2016; not CRASH",
      "max_score": 19,
      "score": 8,
      "risk_group": "intermediate",
      "grade_3_to_5_toxicity_percent": 52
    }
  ]
}
```

## Response fields

- `formula` (string): carg_tt
- `formula_expression` (string): Exact expression used
- `score` (integer): Hurria 2011 Table 5 points (published max 19)
- `max_score` (integer): 19
- `risk_group` (string): low (0-5), intermediate (6-9), or high (10-19) from the Hurria 2011 derivation. Not 10-23. Not a chemotherapy order.
- `grade_3_to_5_toxicity_percent` (integer): Derivation grade 3-5 toxicity percent: 30 (low), 52 (intermediate), or 83 (high).
- `components` (array): Per-factor points
- `citation` (object): Hurria 2011 J Clin Oncol citation
- `disclaimer` (string): Not-a-device notice

## Example JSON

Frozen fixture. Not a live lookup.

```json
{
  "components": [
    {
      "value": 75,
      "factor": "age_ge_72",
      "points": 2,
      "present": true
    },
    {
      "factor": "gi_or_gu",
      "points": 2,
      "present": true
    },
    {
      "factor": "standard_dose",
      "points": 2,
      "present": true
    },
    {
      "factor": "polychemotherapy",
      "points": 2,
      "present": true
    },
    {
      "value": {
        "sex": "male",
        "hemoglobin_g_dl": 12.0
      },
      "factor": "hemoglobin_low",
      "points": 0,
      "present": false
    },
    {
      "value": 50.0,
      "factor": "jelliffe_crcl_lt_34",
      "points": 0,
      "present": false
    },
    {
      "factor": "hearing_fair_or_worse",
      "points": 0,
      "present": false
    },
    {
      "factor": "falls_last_6_months",
      "points": 0,
      "present": false
    },
    {
      "factor": "limited_walking_one_block",
      "points": 0,
      "present": false
    },
    {
      "factor": "needs_help_with_medications",
      "points": 0,
      "present": false
    },
    {
      "factor": "decreased_social_activity",
      "points": 0,
      "present": false
    }
  ],
  "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": "Hurria A, Togawa K, Mohile SG, et al.",
    "doi": "10.1200/JCO.2011.34.7625",
    "id": "hurria-2011",
    "pmid": "21810685",
    "source": "J Clin Oncol. 2011;29(25):3457-3465",
    "title": "Predicting chemotherapy toxicity in older adults with cancer: a prospective multicenter study"
  },
  "formula": "carg_tt",
  "formula_expression": "CARG-TT = age_ge_72 (2) + gi_or_gu (2) + standard_dose (2) + polychemotherapy (2) + hemoglobin_low (3; male <11 g/dL or female <10 g/dL) + jelliffe_crcl_lt_34 (3) + hearing_fair_or_worse (2) + falls_last_6_months (3) + limited_walking_one_block (2) + needs_help_with_medications (1) + decreased_social_activity (1); Hurria 2011 Table 5; max 19; 0-5 low 30%, 6-9 intermediate 52%, 10-19 high 83%; GI/GU is +2 when present (not inverted); not CARG-TT 2016; not CRASH",
  "max_score": 19,
  "score": 8,
  "risk_group": "intermediate",
  "grade_3_to_5_toxicity_percent": 52
}
```

## Errors

- HTTP 400 `invalid_age`: age must be an integer from 18 to 120 Returned before settlement; you are not charged.
- HTTP 400 `invalid_sex`: sex must be female or male Returned before settlement; you are not charged.
- HTTP 400 `invalid_flag`: boolean clinical flags must be true or false Returned before settlement; you are not charged.
- HTTP 400 `invalid_hemoglobin`: hemoglobin_g_l (30-220) or hemoglobin_g_dl (3-22) is required, not both. Returned before settlement; you are not charged.
- HTTP 400 `invalid_jelliffe_crcl`: jelliffe_crcl_ml_min must be a number from 1 to 300 (Hurria 2011 Jelliffe ideal-weight creatinine clearance as assigned by the caller; magent does not compute Jelliffe). Returned before settlement; you are not charged.
- HTTP 400 `invalid_items`: POST body must be a JSON object with only an items array Returned before settlement; you are not charged.
- HTTP 400 `invalid_item_count`: items must be an array of 1 to 25 objects Returned before settlement; you are not charged.
- HTTP 400 `invalid_item`: each items entry must be a JSON object Returned before settlement; you are not charged.

Shared HTTP 402 and 503: https://magentlab.com/docs/payments

## Related tools

- [G8](https://magentlab.com/docs/g8) — Sum the eight Bellera 2012 G8 items (seven MNA items A, B, C, E, F, H, P plus age) and return whether the published ≤14 impaired-screen cutoff is met.
- [Karnofsky](https://magentlab.com/docs/karnofsky) — Return the Karnofsky 1949 Performance Status 10-100 from a caller-assigned integer, with a stable label.

## 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.

- GET the tool with Accept: application/json (do not send Accept: text/html unless you want the human paywall).
- HTTP 402 means you have not paid. Decode the base64 PAYMENT-REQUIRED header. HTTP 503 is not a new quote.
- Sign accepts[0] (exact, EIP-3009) with validBefore = now + maxTimeoutSeconds (600 seconds), or accepts[1] (batch-settlement deposit/voucher) on product GET. Ping and POST {items} stay exact. Magent retries transient facilitator 429/5xx before answering.
- Retry the same URL with PAYMENT-SIGNATURE (base64 JSON of accepted and payload). Magent attaches canonical extensions.bazaar on CDP verify/settle; echoing 402 bazaar is optional.
- Success is HTTP 200 JSON plus PAYMENT-RESPONSE. exact settles before the tool. batch-settlement verifies (and deposit-settles) before the tool and commits the charge after HTTP 2xx. HTTP 503: retry the same PAYMENT-SIGNATURE. Mint a new exact nonce only after a new HTTP 402.

- offered `exact` on eip155:8453: Fixed-price USDC on Base. The buyer authorizes the advertised amount (EIP-3009). magent settles before the tool runs (paymentFlow upfront). extra.assetTransferMethod=eip3009 extra.paymentFlow=upfront.
- offered `batch-settlement` on eip155:8453: Payment-channel vouchers claimed later in batches. Exact stays accepts[0]. Same-path POST {items} is still exact. extra.assetTransferMethod=eip3009 extra.paymentFlow=authorization.

- not offered `upto`: Not offered. Usage-based: buyer authorizes a ceiling, seller settles the actual amount after work. Reserved for a future metered tool. Not for current calculators or code search.

Same-path POST {items} is still scheme exact: one EIP-3009 authorization for GET unit plus $0.002 per extra item. That is not x402 batch-settlement (payment channels / vouchers).

Shared HTTP 402 and 503 table: https://magentlab.com/docs/payments

Stdio MCP (one process per host): https://magentlab.com/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.
