# MYSEC-PM Score Calculator (Passamonti 2017)

> MYSEC-PM Score Calculator (Passamonti 2017) is a paid API for AI agents from api.magentlab.com, paid per call via x402, $0.005/call, status unknown (last checked 2026-09-14).

Calculates the MYSEC-PM prognostic score for post-polycythemia vera and post-essential thrombocythemia myelofibrosis, returning a numeric score and risk category (Low/Int-1/Int-2/High).

## Facts

- Endpoint: GET https://api.magentlab.com/api/calc/mysec_pm
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/mysec-pm-score-calculator-passamonti-2017-2f489122
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_vepo-G_P65BnUW9fWWN_D

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability mysec-pm-score-calculator-passamonti-2017-2f489122
```

Example prompt: My patient is 67 years old with post-PV myelofibrosis, hemoglobin 9.8 g/dL, circulating blasts 4%, CALR-unmutated (JAK2-positive), platelets 110×10^9/L, and has constitutional symptoms — what is their MYSEC-PM score and risk category?

## When to prefer this

Use this endpoint specifically for secondary myelofibrosis (post-PV or post-ET MF) risk stratification using the Passamonti 2017 MYSEC-PM model. Do not use for primary myelofibrosis (use DIPSS or GIPSS instead). Choose this over generic calculators when the clinical context is post-PV/post-ET MF and you have age, hemoglobin, circulating blasts, CALR mutation status, platelet count, and constitutional symptom data. The caller must supply pre-determined CALR mutation status; this endpoint does not perform sequencing or lab assays.

## Known failure modes

- Missing required parameters (age, platelets, blasts_percent, calr_unmutated, constitutional_symptoms) returns a validation error
- Providing both hemoglobin_g_l and hemoglobin_g_dl simultaneously returns an error
- Age or lab values outside allowed ranges (e.g. age <18 or >120, blasts >30%) are rejected
- Hemoglobin provided in wrong units without proper field selection returns incorrect score silently
- No hemoglobin field provided at all may cause missing-input error

## How this service works

Passamonti 2017 MYSEC-PM for post-PV and post-ET myelofibrosis. Score = 0.15*age + hemoglobin <11 g/dL (2) + circulating blasts ≥3% (2) + CALR-unmutated (2) + platelets <150×10^9/L (1) + constitutional symptoms (1). Low <11, intermediate_1 ≥11 and <14, intermediate_2 ≥14 and <16, high ≥16. Not DIPSS (PMF), not GIPSS, not a transplant listing. magent does not sequence CALR.

## Output

Returns the total MYSEC-PM numeric score (rounded to 2 decimal places, calculated as 0.15×age plus 2 if hemoglobin <11 g/dL, plus 2 if blasts ≥3%, plus 2 if CALR-unmutated, plus 1 if platelets <150×10^9/L, plus 1 if constitutional symptoms present) and the corresponding risk category: Low (<11), Intermediate-1 (≥11 and <14), Intermediate-2 (≥14 and <16), or High (≥16).

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET",
      "HEAD",
      "DELETE"
     ],
     "type": "string"
    },
    "headers": {
     "type": "object",
     "additionalProperties": {
      "type": "string"
     }
    },
    "queryParams": {
     "type": "object",
     "required": [
      "age",
      "platelets_10e9_l",
      "blasts_percent",
      "calr_unmutated",
      "constitutional_symptoms"
     ],
     "properties": {
      "age": {
       "type": "integer",
       "description": "Age in years (18-120). Adds 0.15 points per year as published (Passamonti 2017). Age stays continuous; the total score is rounded to 2 decimal places."
      },
      "blasts_percent": {
       "type": "number",
       "description": "Circulating blasts as a percent (0-30). ≥3 scores 2 (Passamonti 2017). 2.9 is the <3 arm and scores 0. magent does not read a smear."
      },
      "calr_unmutated": {
       "type": "boolean",
       "description": "CALR-unmutated genotype (JAK2, MPL, or triple-negative) as assigned by the caller (Passamonti 2017). true scores 2. magent does not sequence CALR."
      },
      "hemoglobin_g_l": {
       "type": "number",
       "description": "Hemoglobin in g/L (30-220). Converted as hemoglobin_g_dl = hemoglobin_g_l / 10. Provide this or hemoglobin_g_dl, not both."
      },
      "hemoglobin_g_dl": {
       "type": "number",
       "description": "Hemoglobin in g/dL (3-22). Provide this or hemoglobin_g_l, not both. <11 scores 2 (Passamonti 2017). 11.0 is the ≥11 arm and scores 0. magent does not assay hemoglobin."
      },
      "platelets_10e9_l": {
       "type": "number",
       "description": "Platelet count in 10^9/L (1-2000). <150 scores 1 (Passamonti 2017). 150.0 is the ≥150 arm and scores 0. magent does not assay platelets."
      },
      "constitutional_symptoms": {
       "type": "boolean",
       "description": "Constitutional symptoms as assigned by the caller (Passamonti 2017). true scores 1. magent does not take a history."
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/mysec-pm-score-calculator-passamonti-2017-2f489122/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.magentlab.com](https://www.zero.xyz/host/api.magentlab.com/llms.txt)
