MAGENT

Respiratory · LIVE

REVEAL 2.0 PAH risk score

REVEAL 2.0

Sum Benza 2019 REVEAL 2.0 points from etiology, demographics, renal insufficiency, WHO functional class, 6-month hospitalization, vitals, 6MWD, BNP or NT-proBNP, echo, DLCO, and hemodynamics, and return the published low / intermediate / high 12-month mortality category.

LIVE $0.005 USDC GET /api/calc/reveal_pah

Markdown: /docs/reveal-pah.md · Canonical: https://magentlab.com/docs/reveal-pah

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

What it computes

Sum Benza 2019 REVEAL 2.0 points from etiology, demographics, renal insufficiency, WHO functional class, 6-month hospitalization, vitals, 6MWD, BNP or NT-proBNP, echo, DLCO, and hemodynamics, and return the published low / intermediate / high 12-month mortality category.

When to use

When an agent needs the published REVEAL 2.0 point total and three-category 12-month mortality band and must not invent a PAH diagnosis, a dose, REVEAL 1.0 cutoffs, or REVEAL Lite 2.

When not to use

  • Not a medical device. Not a PAH diagnosis, transplant listing, or a medication dose.
  • Caller-assigned inputs. magent does not walk the patient, assay BNP, interpret the echocardiogram, measure DLCO, or catheterize.
  • REVEAL 2.0 only (Benza 2019). Not the 2012 REVEAL 1.0 calculator and not REVEAL Lite 2.

Formula

REVEAL 2.0 = 6 + etiology + male_gt_60 + renal_insufficiency + who_fc + hospitalization_6mo + sbp_lt_110 + hr_gt_96 + six_minute_walk + bnp_or_nt_probnp + pericardial_effusion + dlco_lt_40 + mrap_gt_20 + pvr_lt_5; etiology ctd +1, poph +3, heritable +2, other 0; male and age >60 +2; eGFR <60 or renal insufficiency +1; WHO FC I -1, II 0, III +1, IV +2; all-cause hospitalization in prior 6 months +1; SBP <110 mmHg +1; HR >96 bpm +1; 6MWD >=440 m -2, 320-<440 m -1, 165-<320 m 0, <165 m +1; BNP <50 or NT-proBNP <300 -2, BNP 50-<200 or NT-proBNP 300-<1100 0, BNP 200-<800 +1, BNP >=800 or NT-proBNP >=1100 +2; pericardial effusion +1; DLCO <40% predicted +1; mRAP >20 mmHg +1; PVR <5 WU -1; low 0-6, intermediate 7-8, high >=9 (12-month mortality); max 23

Citation

Title
Predicting Survival in Patients With Pulmonary Arterial Hypertension: The REVEAL Risk Score Calculator 2.0 and Comparison With ESC/ERS-Based Risk Assessment Strategies
Authors
Benza RL, Gomberg-Maitland M, Elliott CG, et al.
Source
Chest. 2019;156(2):323-337
DOI
10.1016/j.chest.2018.11.030

Worked example

Lowest-risk published combination

Given: age=40bnp_pg_ml=40dlco_lt_40=falseetiology=otherhospitalization_6mo=falsehr_gt_96=falsemale=falsemrap_gt_20=falsepericardial_effusion=falsepvr_lt_5=truerenal_insufficiency=falsesbp_lt_110=falsesix_minute_walk_m=480who_fc=1

  1. start = 6
  2. WHO FC I = -1
  3. 6MWD >=440 m = -2
  4. BNP <50 pg/mL = -2
  5. PVR <5 WU = -1
  6. score = 0
  7. low (0-6)

WHO FC III otherwise neutral

Given: age=40bnp_pg_ml=100dlco_lt_40=falseetiology=otherhospitalization_6mo=falsehr_gt_96=falsemale=falsemrap_gt_20=falsepericardial_effusion=falsepvr_lt_5=falserenal_insufficiency=falsesbp_lt_110=falsesix_minute_walk_m=200who_fc=3

  1. start = 6
  2. WHO FC III = +1
  3. score = 7
  4. intermediate (7-8)

Also searched as

  • REVEAL 2.0
  • REVEAL risk score
  • pulmonary arterial hypertension risk
  • Benza 2019
  • PAH 12-month mortality
  • WHO functional class PAH
  • REVEAL registry 2.0

Try

Opens the live endpoint. Unpaid browser requests show the paywall; agents should send Accept: application/json.

/api/calc/reveal_pah?who_fc=1&etiology=other&age=40&male=false&renal_insufficiency=false&hospitalization_6mo=false&sbp_lt_110=false&hr_gt_96=false&six_minute_walk_m=480&bnp_pg_ml=40&pericardial_effusion=false&dlco_lt_40=false&mrap_gt_20=false&pvr_lt_5=true

Full URL: https://api.magentlab.com/api/calc/reveal_pah?who_fc=1&etiology=other&age=40&male=false&renal_insufficiency=false&hospitalization_6mo=false&sbp_lt_110=false&hr_gt_96=false&six_minute_walk_m=480&bnp_pg_ml=40&pericardial_effusion=false&dlco_lt_40=false&mrap_gt_20=false&pvr_lt_5=true

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/reveal_pah?who_fc=1&etiology=other&age=40&male=false&renal_insufficiency=false&hospitalization_6mo=false&sbp_lt_110=false&hr_gt_96=false&six_minute_walk_m=480&bnp_pg_ml=40&pericardial_effusion=false&dlco_lt_40=false&mrap_gt_20=false&pvr_lt_5=true"

Parameters

Name Type Required Description
who_fc integer required WHO / NYHA functional class 1, 2, 3, or 4 (Benza 2019). FC I -1; II 0; III +1; IV +2. Caller-assigned; magent does not interview the patient.
etiology string required · other, ctd, poph, heritable PAH subgroup (Benza 2019). other (including idiopathic) 0; ctd +1; poph +3; heritable +2. Mutually exclusive. Caller-assigned.
age integer required Age in years (18-120). Male and age >60 scores +2 (Benza 2019).
male boolean required Male sex as assigned by the caller. true or false. Scores +2 only when age >60.
renal_insufficiency boolean required eGFR <60 mL/min/1.73 m2 or renal insufficiency by clinical judgment when eGFR is unavailable (Benza 2019). true or false. +1 if true. magent does not compute eGFR.
hospitalization_6mo boolean required All-cause hospitalization in the prior 6 months (Benza 2019). true or false. +1 if true.
sbp_lt_110 boolean required Systolic blood pressure <110 mmHg as assigned by the caller (Benza 2019). true or false. +1 if true. magent does not measure blood pressure.
hr_gt_96 boolean required Heart rate >96 bpm as assigned by the caller (Benza 2019 REVEAL 2.0, not the 1.0 >92 cutoff). true or false. +1 if true.
six_minute_walk_m number required Six-minute walk distance in meters 0-1000 (Benza 2019). >=440 -2; 320-<440 -1; 165-<320 0; <165 +1. Caller-assigned; magent does not time the walk.
bnp_pg_ml number required BNP in pg/mL 0-35000 (Benza 2019). <50 -2; 50-<200 0; 200-<800 +1; >=800 +2. Omit only when sending nt_probnp_pg_ml instead. magent does not assay BNP.
nt_probnp_pg_ml number optional NT-proBNP in pg/mL 0-35000 when BNP is not sent (Benza 2019). <300 -2; 300-<1100 0; >=1100 +2. BNP is used when both are sent.
pericardial_effusion boolean required Pericardial effusion on echocardiography as assigned by the caller (Benza 2019). true or false. +1 if true. magent does not read the echocardiogram.
dlco_lt_40 boolean required DLCO <40% predicted as assigned by the caller (Benza 2019 REVEAL 2.0, not the 1.0 <=32 / >=80 bands). true or false. +1 if true.
mrap_gt_20 boolean required Mean right atrial pressure >20 mmHg within 1 year as assigned by the caller (Benza 2019). true or false. +1 if true. magent does not catheterize.
pvr_lt_5 boolean required Pulmonary vascular resistance <5 Wood units as assigned by the caller (Benza 2019 REVEAL 2.0, not the 1.0 >32 WU band). true or false. -1 if true.

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.

POST /api/calc/reveal_pah Max 25 unit_amount + extra_item_amount * (n - 1) extra $0.002 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 (fixture)

{
  "items": [
    {
      "age": "40",
      "bnp_pg_ml": "40",
      "dlco_lt_40": "false",
      "etiology": "other",
      "hospitalization_6mo": "false",
      "hr_gt_96": "false",
      "male": "false",
      "mrap_gt_20": "false",
      "pericardial_effusion": "false",
      "pvr_lt_5": "true",
      "renal_insufficiency": "false",
      "sbp_lt_110": "false",
      "six_minute_walk_m": "480",
      "who_fc": "1"
    },
    {
      "age": "40",
      "bnp_pg_ml": "40",
      "dlco_lt_40": "false",
      "etiology": "other",
      "hospitalization_6mo": "false",
      "hr_gt_96": "false",
      "male": "false",
      "mrap_gt_20": "false",
      "pericardial_effusion": "false",
      "pvr_lt_5": "true",
      "renal_insufficiency": "false",
      "sbp_lt_110": "false",
      "six_minute_walk_m": "480",
      "who_fc": "1"
    }
  ]
}

Open bulk paywall →

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/reveal_pah",
  "items": [
    {
      "components": [
        {
          "factor": "reveal_2_0_start",
          "points": 6,
          "present": true
        },
        {
          "value": "other",
          "factor": "etiology",
          "points": 0,
          "present": false
        },
        {
          "value": 40,
          "factor": "male_gt_60",
          "points": 0,
          "present": false
        },
        {
          "factor": "renal_insufficiency",
          "points": 0,
          "present": false
        },
        {
          "value": 1,
          "factor": "who_fc",
          "points": -1,
          "present": true
        },
        {
          "factor": "hospitalization_6mo",
          "points": 0,
          "present": false
        },
        {
          "factor": "sbp_lt_110",
          "points": 0,
          "present": false
        },
        {
          "factor": "hr_gt_96",
          "points": 0,
          "present": false
        },
        {
          "value": 480.0,
          "factor": "six_minute_walk",
          "points": -2,
          "present": true
        },
        {
          "value": 40.0,
          "factor": "bnp_or_nt_probnp",
          "points": -2,
          "present": true
        },
        {
          "factor": "pericardial_effusion",
          "points": 0,
          "present": false
        },
        {
          "factor": "dlco_lt_40",
          "points": 0,
          "present": false
        },
        {
          "factor": "mrap_gt_20",
          "points": 0,
          "present": false
        },
        {
          "factor": "pvr_lt_5",
          "points": -1,
          "present": true
        }
      ],
      "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": "Benza RL, Gomberg-Maitland M, Elliott CG, et al.",
        "doi": "10.1016/j.chest.2018.11.030",
        "id": "benza-2019",
        "pmid": "30772387",
        "source": "Chest. 2019;156(2):323-337",
        "title": "Predicting Survival in Patients With Pulmonary Arterial Hypertension: The REVEAL Risk Score Calculator 2.0 and Comparison With ESC/ERS-Based Risk Assessment Strategies"
      },
      "formula": "reveal_pah",
      "formula_expression": "REVEAL 2.0 = 6 + etiology + male_gt_60 + renal_insufficiency + who_fc + hospitalization_6mo + sbp_lt_110 + hr_gt_96 + six_minute_walk + bnp_or_nt_probnp + pericardial_effusion + dlco_lt_40 + mrap_gt_20 + pvr_lt_5; etiology ctd +1, poph +3, heritable +2, other 0; male and age >60 +2; eGFR <60 or renal insufficiency +1; WHO FC I -1, II 0, III +1, IV +2; all-cause hospitalization in prior 6 months +1; SBP <110 mmHg +1; HR >96 bpm +1; 6MWD >=440 m -2, 320-<440 m -1, 165-<320 m 0, <165 m +1; BNP <50 or NT-proBNP <300 -2, BNP 50-<200 or NT-proBNP 300-<1100 0, BNP 200-<800 +1, BNP >=800 or NT-proBNP >=1100 +2; pericardial effusion +1; DLCO <40% predicted +1; mRAP >20 mmHg +1; PVR <5 WU -1; low 0-6, intermediate 7-8, high >=9 (12-month mortality); max 23",
      "age_years": 40,
      "max_score": 23,
      "score": 0,
      "risk": "low",
      "six_minute_walk_m": 480.0,
      "male": false,
      "renal_insufficiency": false,
      "etiology": "other",
      "dlco_lt_40": false,
      "hospitalization_6mo": false,
      "hr_gt_96": false,
      "mrap_gt_20": false,
      "pericardial_effusion": false,
      "pvr_lt_5": true,
      "sbp_lt_110": false,
      "who_fc": 1,
      "bnp_pg_ml": 40.0
    },
    {
      "components": [
        {
          "factor": "reveal_2_0_start",
          "points": 6,
          "present": true
        },
        {
          "value": "other",
          "factor": "etiology",
          "points": 0,
          "present": false
        },
        {
          "value": 40,
          "factor": "male_gt_60",
          "points": 0,
          "present": false
        },
        {
          "factor": "renal_insufficiency",
          "points": 0,
          "present": false
        },
        {
          "value": 1,
          "factor": "who_fc",
          "points": -1,
          "present": true
        },
        {
          "factor": "hospitalization_6mo",
          "points": 0,
          "present": false
        },
        {
          "factor": "sbp_lt_110",
          "points": 0,
          "present": false
        },
        {
          "factor": "hr_gt_96",
          "points": 0,
          "present": false
        },
        {
          "value": 480.0,
          "factor": "six_minute_walk",
          "points": -2,
          "present": true
        },
        {
          "value": 40.0,
          "factor": "bnp_or_nt_probnp",
          "points": -2,
          "present": true
        },
        {
          "factor": "pericardial_effusion",
          "points": 0,
          "present": false
        },
        {
          "factor": "dlco_lt_40",
          "points": 0,
          "present": false
        },
        {
          "factor": "mrap_gt_20",
          "points": 0,
          "present": false
        },
        {
          "factor": "pvr_lt_5",
          "points": -1,
          "present": true
        }
      ],
      "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": "Benza RL, Gomberg-Maitland M, Elliott CG, et al.",
        "doi": "10.1016/j.chest.2018.11.030",
        "id": "benza-2019",
        "pmid": "30772387",
        "source": "Chest. 2019;156(2):323-337",
        "title": "Predicting Survival in Patients With Pulmonary Arterial Hypertension: The REVEAL Risk Score Calculator 2.0 and Comparison With ESC/ERS-Based Risk Assessment Strategies"
      },
      "formula": "reveal_pah",
      "formula_expression": "REVEAL 2.0 = 6 + etiology + male_gt_60 + renal_insufficiency + who_fc + hospitalization_6mo + sbp_lt_110 + hr_gt_96 + six_minute_walk + bnp_or_nt_probnp + pericardial_effusion + dlco_lt_40 + mrap_gt_20 + pvr_lt_5; etiology ctd +1, poph +3, heritable +2, other 0; male and age >60 +2; eGFR <60 or renal insufficiency +1; WHO FC I -1, II 0, III +1, IV +2; all-cause hospitalization in prior 6 months +1; SBP <110 mmHg +1; HR >96 bpm +1; 6MWD >=440 m -2, 320-<440 m -1, 165-<320 m 0, <165 m +1; BNP <50 or NT-proBNP <300 -2, BNP 50-<200 or NT-proBNP 300-<1100 0, BNP 200-<800 +1, BNP >=800 or NT-proBNP >=1100 +2; pericardial effusion +1; DLCO <40% predicted +1; mRAP >20 mmHg +1; PVR <5 WU -1; low 0-6, intermediate 7-8, high >=9 (12-month mortality); max 23",
      "age_years": 40,
      "max_score": 23,
      "score": 0,
      "risk": "low",
      "six_minute_walk_m": 480.0,
      "male": false,
      "renal_insufficiency": false,
      "etiology": "other",
      "dlco_lt_40": false,
      "hospitalization_6mo": false,
      "hr_gt_96": false,
      "mrap_gt_20": false,
      "pericardial_effusion": false,
      "pvr_lt_5": true,
      "sbp_lt_110": false,
      "who_fc": 1,
      "bnp_pg_ml": 40.0
    }
  ]
}

Response

Field Type Description
formula string reveal_pah
formula_expression string Exact Benza 2019 expression
score integer REVEAL 2.0 points 0-23 including the start of 6
max_score integer 23
risk string Benza 2019 three-category 12-month mortality: low (0-6), intermediate (7-8), high (>=9). Not a diagnosis or dose.
who_fc integer WHO functional class 1-4 used
etiology string other, ctd, poph, or heritable
age_years integer Age used for male >60
male boolean Male flag used
renal_insufficiency boolean Renal insufficiency flag used
hospitalization_6mo boolean 6-month hospitalization flag used
sbp_lt_110 boolean SBP <110 flag used
hr_gt_96 boolean HR >96 flag used
six_minute_walk_m number Walk distance in meters used
bnp_pg_ml number BNP pg/mL when that peptide was used
nt_probnp_pg_ml number NT-proBNP pg/mL when that peptide was used
pericardial_effusion boolean Pericardial effusion flag used
dlco_lt_40 boolean DLCO <40% predicted flag used
mrap_gt_20 boolean mRAP >20 mmHg flag used
pvr_lt_5 boolean PVR <5 WU flag used
components array Per-factor points including the start of 6
citation object Benza et al. Chest 2019 citation
disclaimer string Not-a-device notice

Example JSON

Machine form of the same example. Frozen fixture. Not a live lookup.

{
  "components": [
    {
      "factor": "reveal_2_0_start",
      "points": 6,
      "present": true
    },
    {
      "value": "other",
      "factor": "etiology",
      "points": 0,
      "present": false
    },
    {
      "value": 40,
      "factor": "male_gt_60",
      "points": 0,
      "present": false
    },
    {
      "factor": "renal_insufficiency",
      "points": 0,
      "present": false
    },
    {
      "value": 1,
      "factor": "who_fc",
      "points": -1,
      "present": true
    },
    {
      "factor": "hospitalization_6mo",
      "points": 0,
      "present": false
    },
    {
      "factor": "sbp_lt_110",
      "points": 0,
      "present": false
    },
    {
      "factor": "hr_gt_96",
      "points": 0,
      "present": false
    },
    {
      "value": 480.0,
      "factor": "six_minute_walk",
      "points": -2,
      "present": true
    },
    {
      "value": 40.0,
      "factor": "bnp_or_nt_probnp",
      "points": -2,
      "present": true
    },
    {
      "factor": "pericardial_effusion",
      "points": 0,
      "present": false
    },
    {
      "factor": "dlco_lt_40",
      "points": 0,
      "present": false
    },
    {
      "factor": "mrap_gt_20",
      "points": 0,
      "present": false
    },
    {
      "factor": "pvr_lt_5",
      "points": -1,
      "present": true
    }
  ],
  "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": "Benza RL, Gomberg-Maitland M, Elliott CG, et al.",
    "doi": "10.1016/j.chest.2018.11.030",
    "id": "benza-2019",
    "pmid": "30772387",
    "source": "Chest. 2019;156(2):323-337",
    "title": "Predicting Survival in Patients With Pulmonary Arterial Hypertension: The REVEAL Risk Score Calculator 2.0 and Comparison With ESC/ERS-Based Risk Assessment Strategies"
  },
  "formula": "reveal_pah",
  "formula_expression": "REVEAL 2.0 = 6 + etiology + male_gt_60 + renal_insufficiency + who_fc + hospitalization_6mo + sbp_lt_110 + hr_gt_96 + six_minute_walk + bnp_or_nt_probnp + pericardial_effusion + dlco_lt_40 + mrap_gt_20 + pvr_lt_5; etiology ctd +1, poph +3, heritable +2, other 0; male and age >60 +2; eGFR <60 or renal insufficiency +1; WHO FC I -1, II 0, III +1, IV +2; all-cause hospitalization in prior 6 months +1; SBP <110 mmHg +1; HR >96 bpm +1; 6MWD >=440 m -2, 320-<440 m -1, 165-<320 m 0, <165 m +1; BNP <50 or NT-proBNP <300 -2, BNP 50-<200 or NT-proBNP 300-<1100 0, BNP 200-<800 +1, BNP >=800 or NT-proBNP >=1100 +2; pericardial effusion +1; DLCO <40% predicted +1; mRAP >20 mmHg +1; PVR <5 WU -1; low 0-6, intermediate 7-8, high >=9 (12-month mortality); max 23",
  "age_years": 40,
  "max_score": 23,
  "score": 0,
  "risk": "low",
  "six_minute_walk_m": 480.0,
  "male": false,
  "renal_insufficiency": false,
  "etiology": "other",
  "dlco_lt_40": false,
  "hospitalization_6mo": false,
  "hr_gt_96": false,
  "mrap_gt_20": false,
  "pericardial_effusion": false,
  "pvr_lt_5": true,
  "sbp_lt_110": false,
  "who_fc": 1,
  "bnp_pg_ml": 40.0
}

Client errors (HTTP 400)

Invalid params return 400 without charge. Shared HTTP 402 and 503 meanings: Payments.

HTTP Code When
400 invalid_who_fc who_fc must be 1, 2, 3, or 4 (Benza 2019 REVEAL 2.0 WHO functional class). 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_age age must be an integer from 18 to 120 Returned before settlement; you are not charged.
400 invalid_6mwd Predicted 6MWD needs sex, age 40-80, height, and weight as used in Enright 1998; optional walked_m is a non-negative distance in meters. Returned before settlement; you are not charged.
400 invalid_bnp_pg_ml bnp_pg_ml must be a number from 0 to 35000 (Reed 2010 ROSE). 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

  • Predicted 6MWD — Compute Enright 1998 predicted six-minute walk distance and lower limit of normal from sex, age, height, and weight using the Table 3 height/weight equations.
  • NIVO — Sum Hartley 2021 NIVO points from chest radiograph consolidation, GCS ≤14, atrial fibrillation, pH <7.25, time to acidaemia >12 h, and eMRCD, and return the validation Table 4 grouped in-hospital mortality band.

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.