MAGENT

Emergency · LIVE

ACR/EULAR gout classification criteria

ACR/EULAR gout

Apply the 2015 ACR/EULAR gout classification criteria (Neogi Table 2): require the entry episode, classify immediately if MSU crystals are present, otherwise return the Step 3 score (max 23) and whether score ≥8 classifies gout. Not a gout diagnosis.

LIVE $0.005 USDC GET /api/calc/acr_eular_gout

Markdown: /docs/acr-eular-gout.md · Canonical: https://magentlab.com/docs/acr-eular-gout

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

What it computes

Apply the 2015 ACR/EULAR gout classification criteria (Neogi Table 2): require the entry episode, classify immediately if MSU crystals are present, otherwise return the Step 3 score (max 23) and whether score ≥8 classifies gout. Not a gout diagnosis.

When to use

When an agent already has caller-assigned ACR/EULAR 2015 entry, MSU, clinical, urate, synovial, and imaging items and needs the published classification result for research, not a gout diagnosis and not the Janssens 2010 diagnostic rule.

When not to use

  • Not a medical device and not a gout diagnosis. magent does not examine joints or polarizing microscopy.
  • Classification criteria for research (Neogi 2015). They apply only when entry_criterion is true (at least one episode of swelling, pain, or tenderness in a peripheral joint or bursa).
  • Not the Janssens 2010 gout-rule. MSU-positive synovial fluid is sufficient_msu (Step 2), not the synovial scoring field.
  • Serum urate is a caller-supplied uricase-method number. Provide uric_acid_mg_dl (1–20) or uric_acid_umol_l (60–1190), not both. magent does not assay uric acid.

Formula

ACR/EULAR 2015 gout classification (Neogi Table 2): entry (episode of swelling, pain, or tenderness in a peripheral joint or bursa) required; sufficient MSU in a symptomatic joint/bursa or tophus classifies without score ≥8; else score ≥8 classifies. Score = pattern (other 0, ankle_midfoot 1, mtp1 2) + characteristics 0-3 + time_course (none 0, one_typical 1, recurrent 2) + tophus true 4 + serum urate (<4 mg/dL or <0.24 mmol/L −4; ≥4–<6 or ≥0.24–<0.36 0; 6–<8 or 0.36–<0.48 2; 8–<10 or 0.48–<0.60 3; ≥10 or ≥0.60 4) + synovial (not_done 0, msu_negative −2) + imaging_urate present 4 + imaging_erosion present 4; max 23. Not a diagnosis. Not Janssens 2010

Citation

Title
2015 Gout Classification Criteria: an American College of Rheumatology/European League Against Rheumatism collaborative initiative
Authors
Neogi T, Jansen TLTA, Dalbeth N, Fransen J, Schumacher HR, Berendsen D, Brown M, Choi H, Edwards NL, Janssens HJEM, Lioté F, Naden RP, Nuki G, Ogdie A, Perez-Ruiz F, Saag K, Singh JA, Sundy JS, Tausche AK, Vazquez-Mellado J, Yarows SA, Taylor WJ
Source
Arthritis Rheumatol. 2015;67(10):2557-2568
DOI
10.1002/art.39254

Worked example

Entry met, no MSU, all domains zero, urate 5.0 mg/dL

Given: characteristics=0entry_criterion=trueimaging_erosion=absent_or_not_doneimaging_urate=absent_or_not_donepattern=othersufficient_msu=falsesynovial=not_donetime_course=nonetophus=falseuric_acid_mg_dl=5.0

  1. entry_criterion true; sufficient_msu false
  2. pattern other 0 + characteristics 0 + time_course none 0 + tophus false 0 + urate 5.0 (≥4 and <6) 0 + synovial not_done 0 + imaging absent 0
  3. Score = 0 (max 23); classified_gout false; gout_band not_classified

Sufficient MSU classifies with score 0

Given: characteristics=0entry_criterion=trueimaging_erosion=absent_or_not_doneimaging_urate=absent_or_not_donepattern=othersufficient_msu=truesynovial=not_donetime_course=nonetophus=falseuric_acid_mg_dl=5.0

  1. sufficient_msu true (MSU crystals in a symptomatic joint/bursa or tophus)
  2. Step 3 domains remain zero; score 0
  3. classified_gout true without requiring score ≥8; gout_band classified

Score 11 classifies without MSU

Given: characteristics=3entry_criterion=trueimaging_erosion=absent_or_not_doneimaging_urate=absent_or_not_donepattern=mtp1sufficient_msu=falsesynovial=not_donetime_course=recurrenttophus=trueuric_acid_mg_dl=5.0

  1. mtp1 2 + characteristics 3 + recurrent 2 + tophus 4; urate 5.0 scores 0
  2. Score = 11 ≥8; classified_gout true; gout_band classified

Maximum score 23

Given: characteristics=3entry_criterion=trueimaging_erosion=presentimaging_urate=presentpattern=mtp1sufficient_msu=falsesynovial=not_donetime_course=recurrenttophus=trueuric_acid_mg_dl=10.0

  1. mtp1 2 + characteristics 3 + recurrent 2 + tophus 4 + urate ≥10 4 + imaging_urate 4 + imaging_erosion 4; synovial not_done 0
  2. Score = 23 (max 23); classified_gout true

Also searched as

  • ACR EULAR gout
  • 2015 gout classification criteria
  • Neogi 2015 gout
  • ACR/EULAR gout score
  • MSU crystal gout classification
  • gout classification criteria
  • ACR EULAR 2015 gout
  • not Janssens gout rule

Try

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

/api/calc/acr_eular_gout?entry_criterion=true&sufficient_msu=false&pattern=other&characteristics=0&time_course=none&tophus=false&uric_acid_mg_dl=5.0&synovial=not_done&imaging_urate=absent_or_not_done&imaging_erosion=absent_or_not_done

Full URL: https://api.magentlab.com/api/calc/acr_eular_gout?entry_criterion=true&sufficient_msu=false&pattern=other&characteristics=0&time_course=none&tophus=false&uric_acid_mg_dl=5.0&synovial=not_done&imaging_urate=absent_or_not_done&imaging_erosion=absent_or_not_done

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/acr_eular_gout?entry_criterion=true&sufficient_msu=false&pattern=other&characteristics=0&time_course=none&tophus=false&uric_acid_mg_dl=5.0&synovial=not_done&imaging_urate=absent_or_not_done&imaging_erosion=absent_or_not_done"

Parameters

Name Type Required Description
entry_criterion boolean required Must be true. ACR/EULAR 2015 entry: at least one episode of swelling, pain, or tenderness in a peripheral joint or bursa. false is invalid. magent does not examine joints.
sufficient_msu boolean required Presence of MSU crystals in a symptomatic joint or bursa (synovial fluid) or tophus (Neogi 2015 Step 2). true classifies gout without requiring score ≥8. magent does not perform polarizing microscopy.
pattern string required · other, ankle_midfoot, mtp1 Pattern of joint/bursa involvement ever, monoarticular or oligoarticular unless other (Neogi 2015). other (joints/bursa other than ankle, midfoot, or 1st MTP, or only as part of a polyarticular presentation) scores 0. ankle_midfoot (ankle or midfoot without 1st MTP) scores 1. mtp1 (1st MTP) scores 2. magent does not examine joints.
characteristics integer required · 0, 1, 2, 3 Count (0-3) of symptomatic-episode characteristics ever: erythema overlying the affected joint; cannot bear touch or pressure; great difficulty walking or inability to use the affected joint (Neogi 2015). Points equal the count. magent does not examine joints.
time_course string required · none, one_typical, recurrent Time course of episode(s) ever (Neogi 2015). A typical episode has ≥2 of: time to maximum pain <24 h; resolution ≤14 days; complete resolution between episodes. none scores 0; one_typical scores 1; recurrent scores 2. magent does not take a history.
tophus boolean required Clinical evidence of tophus: draining or chalk-like subcutaneous nodule under transparent skin, often with overlying vascularity, in typical locations (joints, ears, olecranon bursae, finger pads, tendons e.g. Achilles) (Neogi 2015). true scores 4; false scores 0. magent does not examine joints.
uric_acid_mg_dl number optional Highest serum urate in mg/dL (uricase method; 1-20). Provide this or uric_acid_umol_l, not both. <4 scores −4; ≥4 and <6 scores 0; 6–<8 scores 2; 8–<10 scores 3; ≥10 scores 4. magent does not assay uric acid.
uric_acid_umol_l number optional Highest serum urate in µmol/L (uricase method; 60-1190). Provide this or uric_acid_mg_dl, not both. mmol/L = µmol/L / 1000. <0.24 scores −4; ≥0.24 and <0.36 scores 0; 0.36–<0.48 scores 2; 0.48–<0.60 scores 3; ≥0.60 scores 4. magent does not assay uric acid.
synovial string required · not_done, msu_negative Synovial fluid of a symptomatic (ever) joint/bursa, trained observer (Neogi 2015). not_done scores 0; msu_negative scores −2. MSU-positive is sufficient_msu, not this field. magent does not perform polarizing microscopy.
imaging_urate string required · absent_or_not_done, present Imaging evidence of urate deposition (ultrasound double-contour or DECT urate) in a symptomatic (ever) joint/bursa (Neogi 2015). present scores 4. If imaging is not available, absent_or_not_done scores 0. magent does not read imaging.
imaging_erosion string required · absent_or_not_done, present Conventional radiograph of hands and/or feet with ≥1 gout-related erosion (cortical break with sclerotic margin and overhanging edge; excludes DIP joints and gull-wing) (Neogi 2015). present scores 4; absent_or_not_done scores 0. magent does not read radiographs.

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/acr_eular_gout 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": [
    {
      "characteristics": "0",
      "entry_criterion": "true",
      "imaging_erosion": "absent_or_not_done",
      "imaging_urate": "absent_or_not_done",
      "pattern": "other",
      "sufficient_msu": "false",
      "synovial": "not_done",
      "time_course": "none",
      "tophus": "false",
      "uric_acid_mg_dl": "5.0"
    },
    {
      "characteristics": "0",
      "entry_criterion": "true",
      "imaging_erosion": "absent_or_not_done",
      "imaging_urate": "absent_or_not_done",
      "pattern": "other",
      "sufficient_msu": "false",
      "synovial": "not_done",
      "time_course": "none",
      "tophus": "false",
      "uric_acid_mg_dl": "5.0"
    }
  ]
}

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/acr_eular_gout",
  "items": [
    {
      "components": [
        {
          "value": "other",
          "factor": "pattern",
          "points": 0,
          "present": true
        },
        {
          "value": 0,
          "factor": "characteristics",
          "points": 0,
          "present": true
        },
        {
          "value": "none",
          "factor": "time_course",
          "points": 0,
          "present": true
        },
        {
          "value": false,
          "factor": "tophus",
          "points": 0,
          "present": true
        },
        {
          "value": 5.0,
          "factor": "serum_urate",
          "points": 0,
          "present": true
        },
        {
          "value": "not_done",
          "factor": "synovial",
          "points": 0,
          "present": true
        },
        {
          "value": "absent_or_not_done",
          "factor": "imaging_urate",
          "points": 0,
          "present": true
        },
        {
          "value": "absent_or_not_done",
          "factor": "imaging_erosion",
          "points": 0,
          "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": "Neogi T, Jansen TLTA, Dalbeth N, Fransen J, Schumacher HR, Berendsen D, Brown M, Choi H, Edwards NL, Janssens HJEM, Lioté F, Naden RP, Nuki G, Ogdie A, Perez-Ruiz F, Saag K, Singh JA, Sundy JS, Tausche AK, Vazquez-Mellado J, Yarows SA, Taylor WJ",
        "doi": "10.1002/art.39254",
        "id": "neogi-2015",
        "pmid": "26352873",
        "source": "Arthritis Rheumatol. 2015;67(10):2557-2568",
        "title": "2015 Gout Classification Criteria: an American College of Rheumatology/European League Against Rheumatism collaborative initiative"
      },
      "formula": "acr_eular_gout",
      "formula_expression": "ACR/EULAR 2015 gout classification (Neogi Table 2): entry (episode of swelling, pain, or tenderness in a peripheral joint or bursa) required; sufficient MSU in a symptomatic joint/bursa or tophus classifies without score ≥8; else score ≥8 classifies. Score = pattern (other 0, ankle_midfoot 1, mtp1 2) + characteristics 0-3 + time_course (none 0, one_typical 1, recurrent 2) + tophus true 4 + serum urate (<4 mg/dL or <0.24 mmol/L −4; ≥4–<6 or ≥0.24–<0.36 0; 6–<8 or 0.36–<0.48 2; 8–<10 or 0.48–<0.60 3; ≥10 or ≥0.60 4) + synovial (not_done 0, msu_negative −2) + imaging_urate present 4 + imaging_erosion present 4; max 23. Not a diagnosis. Not Janssens 2010",
      "max_score": 23,
      "score": 0,
      "classified_gout": false,
      "gout_band": "not_classified",
      "sufficient_criterion": false
    },
    {
      "components": [
        {
          "value": "other",
          "factor": "pattern",
          "points": 0,
          "present": true
        },
        {
          "value": 0,
          "factor": "characteristics",
          "points": 0,
          "present": true
        },
        {
          "value": "none",
          "factor": "time_course",
          "points": 0,
          "present": true
        },
        {
          "value": false,
          "factor": "tophus",
          "points": 0,
          "present": true
        },
        {
          "value": 5.0,
          "factor": "serum_urate",
          "points": 0,
          "present": true
        },
        {
          "value": "not_done",
          "factor": "synovial",
          "points": 0,
          "present": true
        },
        {
          "value": "absent_or_not_done",
          "factor": "imaging_urate",
          "points": 0,
          "present": true
        },
        {
          "value": "absent_or_not_done",
          "factor": "imaging_erosion",
          "points": 0,
          "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": "Neogi T, Jansen TLTA, Dalbeth N, Fransen J, Schumacher HR, Berendsen D, Brown M, Choi H, Edwards NL, Janssens HJEM, Lioté F, Naden RP, Nuki G, Ogdie A, Perez-Ruiz F, Saag K, Singh JA, Sundy JS, Tausche AK, Vazquez-Mellado J, Yarows SA, Taylor WJ",
        "doi": "10.1002/art.39254",
        "id": "neogi-2015",
        "pmid": "26352873",
        "source": "Arthritis Rheumatol. 2015;67(10):2557-2568",
        "title": "2015 Gout Classification Criteria: an American College of Rheumatology/European League Against Rheumatism collaborative initiative"
      },
      "formula": "acr_eular_gout",
      "formula_expression": "ACR/EULAR 2015 gout classification (Neogi Table 2): entry (episode of swelling, pain, or tenderness in a peripheral joint or bursa) required; sufficient MSU in a symptomatic joint/bursa or tophus classifies without score ≥8; else score ≥8 classifies. Score = pattern (other 0, ankle_midfoot 1, mtp1 2) + characteristics 0-3 + time_course (none 0, one_typical 1, recurrent 2) + tophus true 4 + serum urate (<4 mg/dL or <0.24 mmol/L −4; ≥4–<6 or ≥0.24–<0.36 0; 6–<8 or 0.36–<0.48 2; 8–<10 or 0.48–<0.60 3; ≥10 or ≥0.60 4) + synovial (not_done 0, msu_negative −2) + imaging_urate present 4 + imaging_erosion present 4; max 23. Not a diagnosis. Not Janssens 2010",
      "max_score": 23,
      "score": 0,
      "classified_gout": false,
      "gout_band": "not_classified",
      "sufficient_criterion": false
    }
  ]
}

Response

Field Type Description
formula string acr_eular_gout
formula_expression string Neogi 2015 ACR/EULAR gout classification expression
score number Step 3 clinical score (may be negative; min −6, max 23). Always computed, including when sufficient_msu is true.
max_score integer Always 23
classified_gout boolean true iff sufficient_msu is true or score ≥8. Classification criteria for research, not a gout diagnosis.
sufficient_criterion boolean Echo of sufficient_msu (Neogi 2015 Step 2)
gout_band string classified when classified_gout is true; not_classified otherwise. Not a gout diagnosis.
components array Per-domain Neogi 2015 points
citation object Neogi 2015 Arthritis Rheumatol citation
disclaimer string Not-a-device notice

Example JSON

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

{
  "components": [
    {
      "value": "other",
      "factor": "pattern",
      "points": 0,
      "present": true
    },
    {
      "value": 0,
      "factor": "characteristics",
      "points": 0,
      "present": true
    },
    {
      "value": "none",
      "factor": "time_course",
      "points": 0,
      "present": true
    },
    {
      "value": false,
      "factor": "tophus",
      "points": 0,
      "present": true
    },
    {
      "value": 5.0,
      "factor": "serum_urate",
      "points": 0,
      "present": true
    },
    {
      "value": "not_done",
      "factor": "synovial",
      "points": 0,
      "present": true
    },
    {
      "value": "absent_or_not_done",
      "factor": "imaging_urate",
      "points": 0,
      "present": true
    },
    {
      "value": "absent_or_not_done",
      "factor": "imaging_erosion",
      "points": 0,
      "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": "Neogi T, Jansen TLTA, Dalbeth N, Fransen J, Schumacher HR, Berendsen D, Brown M, Choi H, Edwards NL, Janssens HJEM, Lioté F, Naden RP, Nuki G, Ogdie A, Perez-Ruiz F, Saag K, Singh JA, Sundy JS, Tausche AK, Vazquez-Mellado J, Yarows SA, Taylor WJ",
    "doi": "10.1002/art.39254",
    "id": "neogi-2015",
    "pmid": "26352873",
    "source": "Arthritis Rheumatol. 2015;67(10):2557-2568",
    "title": "2015 Gout Classification Criteria: an American College of Rheumatology/European League Against Rheumatism collaborative initiative"
  },
  "formula": "acr_eular_gout",
  "formula_expression": "ACR/EULAR 2015 gout classification (Neogi Table 2): entry (episode of swelling, pain, or tenderness in a peripheral joint or bursa) required; sufficient MSU in a symptomatic joint/bursa or tophus classifies without score ≥8; else score ≥8 classifies. Score = pattern (other 0, ankle_midfoot 1, mtp1 2) + characteristics 0-3 + time_course (none 0, one_typical 1, recurrent 2) + tophus true 4 + serum urate (<4 mg/dL or <0.24 mmol/L −4; ≥4–<6 or ≥0.24–<0.36 0; 6–<8 or 0.36–<0.48 2; 8–<10 or 0.48–<0.60 3; ≥10 or ≥0.60 4) + synovial (not_done 0, msu_negative −2) + imaging_urate present 4 + imaging_erosion present 4; max 23. Not a diagnosis. Not Janssens 2010",
  "max_score": 23,
  "score": 0,
  "classified_gout": false,
  "gout_band": "not_classified",
  "sufficient_criterion": false
}

Client errors (HTTP 400)

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

HTTP Code When
400 invalid_acr_eular_gout entry_criterion must be true; pattern must be other, ankle_midfoot, or mtp1; characteristics an integer 0-3; time_course none, one_typical, or recurrent; synovial not_done or msu_negative; imaging_urate and imaging_erosion absent_or_not_done or present (Neogi 2015 ACR/EULAR gout). 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_uric_acid uric_acid_mg_dl (1-20) or uric_acid_umol_l (60-1190) is required, not both. 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

  • Gout rule — Sum the Janssens 2010 diagnostic-rule points for acute gouty arthritis without joint-fluid analysis and return low (≤4), intermediate (4.5–7.5), or high (≥8).

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.