HLA-Verify

HLA nomenclature and match checks against a pinned IPD-IMGT/HLA release. No patient identifiers.

사용해야 할까요

품질 및 안전성

A
설명 품질
100%
스키마 완전성
92%
이름 품질
86%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~6,403토큰 (도구 정의)
~6.3 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 5.00%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "hla-verify": {
      "url": "https://api.hlaverify.com/mcp"
    }
  }
}

원격 엔드포인트

https://api.hlaverify.com/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (10)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢verify_text(text)

Scan HLA typing report text, or model output about HLA, for allele-shaped tokens and classify each one: valid / legacy (with modern form) / deleted (with successor) / fabricated. Nomenclature checking against a pinned IPD-IMGT/HLA release, not interpretation of a case. Use on any AI-generated or transcribed content mentioning HLA. Send the HLA content only, with patient identifiers removed first.

입력 스키마

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "maxLength": 200000,
      "description": "HLA typing report text, or model output about HLA typing, to scan for allele names. Send the HLA content only: strip patient names, medical record numbers, dates of birth, accession and case identifiers, and any other patient details before sending. The caller is responsible for de-identifying the text; this service neither needs nor wants identifiers and does not store request bodies."
    }
  },
  "required": [
    "text"
  ],
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "release": {
      "type": "string",
      "description": "IPD-IMGT/HLA release every verdict was computed against."
    },
    "clean": {
      "type": "boolean",
      "description": "The guardrail: true only when no token is hallucinated, fabricated_group or deleted. Gate on this before presenting the text."
    },
    "counts": {
      "type": "object",
      "description": "Number of distinct tokens per status.",
      "required": [
        "valid",
        "deleted",
        "group",
        "fabricated_group",
        "hallucinated"
      ],
      "properties": {
        "valid": {
          "type": "integer"
        },
        "deleted": {
          "type": "integer"
        },
        "group": {
          "type": "integer"
        },
        "fabricated_group": {
          "type": "integer"
        },
        "hallucinated": {
          "type": "integer"
        }
      }
    },
    "tokens": {
      "type": "array",
      "description": "Each distinct allele-shaped token found, sorted by token.",
      "items": {
        "type": "object",
        "required": [
          "token",
          "status",
          "note"
        ],
        "properties": {
          "token": {
            "type": "string",
            "description": "The token without any HLA- prefix."
          },
          "status": {
            "type": "string",
            "enum": [
              "valid",
              "group",
              "deleted",
              "fabricated_group",
              "hallucinated"
            ],
            "description": "valid: assigned (or a valid prefix); group: a real G/P group; deleted: no longer current (see successor); fabricated_group: G/P-shaped but no such group; hallucinated: never existed in any release."
          },
          "note": {
            "type": "string",
            "description": "Human-readable meaning of status."
          },
          "successor": {
            "type": "string",
            "description": "deleted: the name it was renamed to, when known."
          },
          "current_2field": {
            "type": "string",
            "description": "valid/deleted tokens that resolve: current 2-field form."
          },
          "g_group": {
            "type": "string",
            "description": "G group; NONE or AMBIGUOUS when there is no single group."
          },
          "flags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      }
    },
    "attribution": {
      "type": "string",
      "description": "Data attribution (IPD-IMGT/HLA, CC-BY-ND)."
    }
  },
  "required": [
    "release",
    "tokens",
    "counts",
    "clean"
  ]
}
🟢normalize_allele(name)

Normalize one reported HLA allele name (any era) to current 2-field form, with G group, P group, serologic equivalent, and flags.

입력 스키마

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 64,
      "description": "One reported HLA allele name, any nomenclature era. An allele string only, never a patient name, medical record number or other identifier."
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "reported": {
      "type": "string",
      "description": "The input, verbatim."
    },
    "current_name": {
      "type": "string",
      "description": "Current full name in the pinned release, or UNRESOLVABLE."
    },
    "allele_2field": {
      "type": "string",
      "description": "Current 2-field form, or UNRESOLVABLE. Never present an UNRESOLVABLE name as an allele."
    },
    "g_group": {
      "type": "string",
      "description": "G group; NONE (no group), AMBIGUOUS (members differ) or UNRESOLVABLE."
    },
    "flags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "e.g. deprecated_name, nonexistent_allele, null_allele."
    }
  },
  "required": [
    "reported",
    "current_name",
    "allele_2field",
    "g_group",
    "flags"
  ]
}
🟢allele_info(name)

Look up one exact name in the pinned release and return what it is: assigned (G/P group, first release, confirmed status, WMDA serology, null flag), valid_prefix (member count and sample), or deleted (successor). Not found if the name has never existed in any release.

입력 스키마

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 64,
      "description": "Exact HLA allele name, a lower-resolution prefix, or a deleted name. An allele string only, never a patient name, medical record number or other identifier."
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "detail": {
      "type": "string",
      "description": "Present only when the name is not assigned in this release (and then no other field is)."
    },
    "release": {
      "type": "string",
      "description": "IPD-IMGT/HLA release every verdict was computed against."
    },
    "name": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "enum": [
        "assigned",
        "valid_prefix",
        "deleted"
      ],
      "description": "assigned: an exact allele in this release; valid_prefix: a lower-resolution prefix of assigned alleles; deleted: withdrawn or renamed (see successor)."
    },
    "successor": {
      "type": [
        "string",
        "null"
      ],
      "description": "deleted: the current name, or null if none."
    },
    "g_group": {
      "type": [
        "string",
        "null"
      ],
      "description": "assigned: G group, or null."
    },
    "p_group": {
      "type": [
        "string",
        "null"
      ],
      "description": "assigned: P group, or null."
    },
    "first_release": {
      "type": [
        "string",
        "null"
      ],
      "description": "assigned: first release the exact name appeared in."
    },
    "confirmed": {
      "type": "boolean",
      "description": "assigned: confirmed (vs unconfirmed) allele."
    },
    "serology": {
      "type": "object",
      "description": "assigned: WMDA serologic equivalents by column (non-empty columns only).",
      "properties": {
        "unambiguous": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "possible": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "assumed": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "expert": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": {
        "type": "array",
        "items": {
          "type": "string"
        }
      }
    },
    "null_allele": {
      "type": "boolean",
      "description": "assigned: true for an N (null, not expressed) allele."
    },
    "ligands": {
      "type": "object",
      "description": "Class I (A/B/C) ligand facts, aggregated over member alleles: 'ambiguous' when members disagree, 'unknown' when no residue data.",
      "required": [
        "expressed",
        "leader_21",
        "residue_80",
        "bw",
        "c_group",
        "kir_ligand"
      ],
      "properties": {
        "expressed": {
          "type": "boolean",
          "description": "false when every member allele is null (not expressed)."
        },
        "leader_21": {
          "type": "string",
          "description": "Residue at leader position -21 (M or T; another letter is possible), ambiguous, unknown or not_expressed."
        },
        "residue_80": {
          "type": "string",
          "description": "Residue at position 80 (amino-acid letter), ambiguous, unknown or not_expressed."
        },
        "bw": {
          "type": [
            "string",
            "null"
          ],
          "description": "Bw4 / Bw6 / non-Bw4 / unclassified / ambiguous / unknown / not_expressed; null for HLA-C."
        },
        "c_group": {
          "type": [
            "string",
            "null"
          ],
          "description": "C1 / C2 / unclassified / ambiguous / unknown; null when not applicable."
        },
        "kir_ligand": {
          "type": "string",
          "description": "C1 / C2 / Bw4 / Bw4-80I / Bw4-80T / none / ambiguous / unknown."
        },
        "ambiguities": {
          "type": "object",
          "description": "For each ambiguous field, the distinct member values.",
          "additionalProperties": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      }
    },
    "members_count": {
      "type": "integer",
      "description": "valid_prefix: number of assigned alleles under the prefix."
    },
    "members_sample": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "valid_prefix: up to 10 member alleles."
    },
    "attribution": {
      "type": "string",
      "description": "Data attribution (IPD-IMGT/HLA, CC-BY-ND)."
    }
  },
  "description": "Found: release, name, status and the status-specific fields. Never assigned: only `detail`."
}
🟢match_score(recipient, donor, framework)

Count a donor-recipient HLA match by the published counting rules (R1-R6): allele arithmetic over chromosomes, not a donor recommendation. recipient/donor: {"A": ["A*01:01","A*02:01"], "B": [...], ...} (two reported alleles per locus, any nomenclature era; allele strings only, no patient identifiers). framework: 6/6, 8/8, 10/10, 12/12, or antigen. Returns count, per-locus verdicts, GvH/HvG mismatch counts, and flags; unresolvable typing yields 'potential', never a confident count.

입력 스키마

{
  "type": "object",
  "properties": {
    "recipient": {
      "type": "object",
      "description": "locus -> up to 4 reported allele names. Allele strings only: never patient names, medical record numbers, dates of birth, or accession or case identifiers.",
      "additionalProperties": {
        "type": "array",
        "items": {
          "type": "string"
        }
      }
    },
    "donor": {
      "type": "object",
      "description": "locus -> up to 4 reported allele names. Allele strings only: never patient names, medical record numbers, dates of birth, or accession or case identifiers.",
      "additionalProperties": {
        "type": "array",
        "items": {
          "type": "string"
        }
      }
    },
    "framework": {
      "type": "string",
      "enum": [
        "6/6",
        "8/8",
        "10/10",
        "12/12",
        "antigen"
      ],
      "default": "8/8"
    }
  },
  "required": [
    "recipient",
    "donor"
  ],
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "release": {
      "type": "string",
      "description": "IPD-IMGT/HLA release every verdict was computed against."
    },
    "framework": {
      "type": "string",
      "enum": [
        "6/6",
        "8/8",
        "10/10",
        "12/12",
        "antigen"
      ]
    },
    "count": {
      "type": "string",
      "description": "'matched/total' over the resolvable loci only, or UNRESOLVABLE when none resolves. Check verdicts for 'potential' loci before quoting it as a confident count."
    },
    "verdicts": {
      "type": "object",
      "description": "Framework locus -> verdict.",
      "additionalProperties": {
        "type": "string",
        "enum": [
          "match",
          "mismatch",
          "potential"
        ],
        "description": "potential: typing missing or not resolvable at the framework's level; excluded from count."
      }
    },
    "hvg_mismatches": {
      "type": "integer",
      "description": "Host-versus-graft mismatches over non-potential loci."
    },
    "gvh_mismatches": {
      "type": "integer",
      "description": "Graft-versus-host mismatches over non-potential loci."
    },
    "flags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "e.g. resolution_insufficient, null_allele, null_allele_mismatch."
    },
    "attribution": {
      "type": "string",
      "description": "Data attribution (IPD-IMGT/HLA, CC-BY-ND)."
    }
  },
  "required": [
    "release",
    "framework",
    "count",
    "verdicts",
    "hvg_mismatches",
    "gvh_mismatches",
    "flags"
  ]
}
🟢check_typing(typing)

QC-check one HLA typing (all loci) against the pinned release: resolves every reported allele, flags unresolvable/outdated/locus-mismatched/null alleles, flags too-many/single/homozygous per locus, computes the B-leader (-21 M/T) and KIR-ligand (C1/C2/Bw4) profile, and DRB3/4/5 expected-vs-reported. Nomenclature and internal-consistency checking of the report, not clinical interpretation. typing: {"A": ["A*01:01", "A*02:01"], "B": [...], "DRB1": [...], ...} (any nomenclature era; allele strings only, no patient identifiers).

입력 스키마

{
  "type": "object",
  "properties": {
    "typing": {
      "type": "object",
      "description": "locus -> up to 4 reported allele names. Allele strings only: never patient names, medical record numbers, dates of birth, or accession or case identifiers.",
      "additionalProperties": {
        "type": "array",
        "items": {
          "type": "string"
        }
      }
    }
  },
  "required": [
    "typing"
  ],
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "release": {
      "type": "string",
      "description": "IPD-IMGT/HLA release every verdict was computed against."
    },
    "valid": {
      "type": "boolean",
      "description": "true when there are no error-severity issues. Gate on this before using the typing."
    },
    "loci": {
      "type": "object",
      "description": "Reported locus key -> one row per reported allele, in input order.",
      "additionalProperties": {
        "type": "array",
        "items": {
          "type": "object",
          "required": [
            "reported",
            "status",
            "current_name",
            "allele_2field",
            "g_group",
            "flags",
            "antigen"
          ],
          "properties": {
            "reported": {
              "type": "string"
            },
            "status": {
              "type": "string",
              "enum": [
                "ok",
                "renamed",
                "unresolvable"
              ]
            },
            "current_name": {
              "type": "string",
              "description": "Current name, or UNRESOLVABLE."
            },
            "allele_2field": {
              "type": "string",
              "description": "Current 2-field form, or UNRESOLVABLE."
            },
            "g_group": {
              "type": "string",
              "description": "G group; NONE, AMBIGUOUS or UNRESOLVABLE."
            },
            "flags": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "antigen": {
              "type": "string",
              "description": "WMDA serologic antigen, or 'null' (not expressed) / 'uncertain'."
            },
            "ligands": {
              "type": "object",
              "description": "Class I (A/B/C) ligand facts, aggregated over member alleles: 'ambiguous' when members disagree, 'unknown' when no residue data.",
              "required": [
                "expressed",
                "leader_21",
                "residue_80",
                "bw",
                "c_group",
                "kir_ligand"
              ],
              "properties": {
                "expressed": {
                  "type": "boolean",
                  "description": "false when every member allele is null (not expressed)."
                },
                "leader_21": {
                  "type": "string",
                  "description": "Residue at leader position -21 (M or T; another letter is possible), ambiguous, unknown or not_expressed."
                },
                "residue_80": {
                  "type": "string",
                  "description": "Residue at position 80 (amino-acid letter), ambiguous, unknown or not_expressed."
                },
                "bw": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Bw4 / Bw6 / non-Bw4 / unclassified / ambiguous / unknown / not_expressed; null for HLA-C."
                },
                "c_group": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "C1 / C2 / unclassified / ambiguous / unknown; null when not applicable."
                },
                "kir_ligand": {
                  "type": "string",
                  "description": "C1 / C2 / Bw4 / Bw4-80I / Bw4-80T / none / ambiguous / unknown."
                },
                "ambiguities": {
                  "type": "object",
                  "description": "For each ambiguous field, the distinct member values.",
                  "additionalProperties": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "issues": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "severity",
          "locus",
          "code",
          "detail"
        ],
        "properties": {
          "severity": {
            "type": "string",
            "enum": [
              "error",
              "warning",
              "info"
            ],
            "description": "Any error makes the typing invalid."
          },
          "locus": {
            "type": "string",
            "description": "The locus key as reported."
          },
          "code": {
            "type": "string",
            "description": "unresolvable, deprecated_name, locus_mismatch, null_allele, too_many_alleles, single_allele, homozygous, drb345_unexpected or drb345_not_reported."
          },
          "detail": {
            "type": "string"
          }
        }
      }
    },
    "counts": {
      "type": "object",
      "required": [
        "error",
        "warning",
        "info"
      ],
      "properties": {
        "error": {
          "type": "integer"
        },
        "warning": {
          "type": "integer"
        },
        "info": {
          "type": "integer"
        }
      }
    },
    "profile": {
      "type": "object",
      "required": [
        "b_leader_genotype",
        "c_kir_ligand_genotype",
        "kir_ligands_present",
        "kir_ligand_status"
      ],
      "properties": {
        "b_leader_genotype": {
          "type": [
            "string",
            "null"
          ],
          "description": "HLA-B -21 leader genotype such as M/T ('?' unknown); null when B is not typed."
        },
        "c_kir_ligand_genotype": {
          "type": [
            "string",
            "null"
          ],
          "description": "HLA-C KIR ligand genotype such as C1/C2 ('none', '?'); null when C is not typed."
        },
        "kir_ligands_present": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Sorted subset of C1, C2, Bw4, Bw4-80I, Bw4-80T."
        },
        "kir_ligand_status": {
          "type": "string",
          "enum": [
            "complete",
            "incomplete"
          ],
          "description": "complete only with two classified alleles at each of A, B and C."
        }
      }
    },
    "drb345": {
      "type": [
        "object",
        "null"
      ],
      "description": "DRB3/4/5 expected from DRB1 vs reported; null when DRB1 is not typed.",
      "required": [
        "expected",
        "reported",
        "determinate"
      ],
      "properties": {
        "expected": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "reported": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "determinate": {
          "type": "boolean"
        }
      }
    },
    "attribution": {
      "type": "string",
      "description": "Data attribution (IPD-IMGT/HLA, CC-BY-ND)."
    }
  },
  "required": [
    "release",
    "valid",
    "loci",
    "issues",
    "counts",
    "profile",
    "drb345"
  ]
}
🟢donor_compat(recipient, donor)

Donor/recipient immunogenetic compatibility under two published rule sets: HLA-B leader match (-21 M/T, Petersdorf 2020) for a single HLA-B mismatch, and KIR ligand (C1/C2/Bw4) class comparison, computed over each side's full typing QC. Rule checking against published frameworks; it does not rank or recommend a donor. recipient/donor: {"A": [...], "B": [...], "C": [...], "DRB1": [...], ...} (allele strings only, no patient identifiers). Decision support only; not a medical device.

입력 스키마

{
  "type": "object",
  "properties": {
    "recipient": {
      "type": "object",
      "description": "locus -> up to 4 reported allele names. Allele strings only: never patient names, medical record numbers, dates of birth, or accession or case identifiers.",
      "additionalProperties": {
        "type": "array",
        "items": {
          "type": "string"
        }
      }
    },
    "donor": {
      "type": "object",
      "description": "locus -> up to 4 reported allele names. Allele strings only: never patient names, medical record numbers, dates of birth, or accession or case identifiers.",
      "additionalProperties": {
        "type": "array",
        "items": {
          "type": "string"
        }
      }
    }
  },
  "required": [
    "recipient",
    "donor"
  ],
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "release": {
      "type": "string",
      "description": "IPD-IMGT/HLA release every verdict was computed against."
    },
    "b_leader": {
      "type": "object",
      "required": [
        "recipient",
        "donor",
        "b_mismatches",
        "leader_match",
        "rule"
      ],
      "properties": {
        "recipient": {
          "type": [
            "string",
            "null"
          ],
          "description": "Recipient HLA-B leader genotype, e.g. M/T; null when B is not typed."
        },
        "donor": {
          "type": [
            "string",
            "null"
          ],
          "description": "Donor HLA-B leader genotype; null when B is not typed."
        },
        "b_mismatches": {
          "type": [
            "integer",
            "null"
          ],
          "description": "HLA-B mismatch count; null when B is missing, over-typed or unresolvable on either side."
        },
        "leader_match": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Set only for exactly one HLA-B mismatch with a known M/T leader on both mismatched alleles; otherwise null (not assessable)."
        },
        "rule": {
          "type": "string"
        }
      }
    },
    "kir_ligands": {
      "type": "object",
      "required": [
        "recipient",
        "donor",
        "missing_in_recipient",
        "missing_in_donor",
        "status",
        "rule"
      ],
      "properties": {
        "recipient": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "KIR ligand classes present (C1, C2, Bw4)."
        },
        "donor": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "missing_in_recipient": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "missing_in_donor": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "status": {
          "type": "string",
          "enum": [
            "complete",
            "incomplete"
          ],
          "description": "Treat missing_in_* as provisional unless complete."
        },
        "rule": {
          "type": "string"
        }
      }
    },
    "recipient_valid": {
      "type": "boolean",
      "description": "Recipient typing QC had no errors."
    },
    "donor_valid": {
      "type": "boolean",
      "description": "Donor typing QC had no errors."
    },
    "issues": {
      "type": "object",
      "required": [
        "recipient",
        "donor"
      ],
      "properties": {
        "recipient": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "severity",
              "locus",
              "code",
              "detail"
            ],
            "properties": {
              "severity": {
                "type": "string",
                "enum": [
                  "error",
                  "warning",
                  "info"
                ],
                "description": "Any error makes the typing invalid."
              },
              "locus": {
                "type": "string",
                "description": "The locus key as reported."
              },
              "code": {
                "type": "string",
                "description": "unresolvable, deprecated_name, locus_mismatch, null_allele, too_many_alleles, single_allele, homozygous, drb345_unexpected or drb345_not_reported."
              },
              "detail": {
                "type": "string"
              }
            }
          }
        },
        "donor": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "severity",
              "locus",
              "code",
              "detail"
            ],
            "properties": {
              "severity": {
                "type": "string",
                "enum": [
                  "error",
                  "warning",
                  "info"
                ],
                "description": "Any error makes the typing invalid."
              },
              "locus": {
                "type": "string",
                "description": "The locus key as reported."
              },
              "code": {
                "type": "string",
                "description": "unresolvable, deprecated_name, locus_mismatch, null_allele, too_many_alleles, single_allele, homozygous, drb345_unexpected or drb345_not_reported."
              },
              "detail": {
                "type": "string"
              }
            }
          }
        }
      }
    },
    "attribution": {
      "type": "string",
      "description": "Data attribution (IPD-IMGT/HLA, CC-BY-ND)."
    }
  },
  "required": [
    "release",
    "b_leader",
    "kir_ligands",
    "recipient_valid",
    "donor_valid",
    "issues"
  ]
}
🟢validate_gl_string(gl)

Validate and normalize a GL String (Genotype List, ^ | + ~ / grammar): resolves every allele token, flags outdated/unresolvable names and structural problems (mixed loci within a slash-list, a repeated locus within a haplotype or across ^ blocks, more than two haplotypes, differing loci across a genotype or genotype list, empty elements), and returns the normalized string. Grammar and nomenclature checking only; send allele names, not patient identifiers.

입력 스키마

{
  "type": "object",
  "properties": {
    "gl": {
      "type": "string",
      "maxLength": 100000,
      "description": "GL String to validate and normalize. Allele names and GL grammar only, never patient identifiers."
    }
  },
  "required": [
    "gl"
  ],
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "release": {
      "type": "string",
      "description": "IPD-IMGT/HLA release every verdict was computed against."
    },
    "valid": {
      "type": "boolean",
      "description": "true when there are no error-severity issues."
    },
    "normalized_gl": {
      "type": "string",
      "description": "The GL String with outdated names replaced by current ones."
    },
    "changed": {
      "type": "boolean",
      "description": "normalized_gl differs from the trimmed input."
    },
    "loci": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "alleles": {
      "type": "array",
      "description": "Each distinct allele token, in first-seen order.",
      "items": {
        "type": "object",
        "required": [
          "token",
          "status",
          "current_name",
          "locus"
        ],
        "properties": {
          "token": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "valid",
              "renamed",
              "group",
              "unresolvable"
            ]
          },
          "current_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "null when unresolvable."
          },
          "locus": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      }
    },
    "issues": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "severity",
          "code",
          "detail"
        ],
        "properties": {
          "severity": {
            "type": "string",
            "enum": [
              "error",
              "warning"
            ]
          },
          "code": {
            "type": "string",
            "description": "unresolvable_allele, renamed_allele, whitespace_in_name, empty_element, mixed_locus_allele_list, haplotype_repeats_locus, genotype_loci_differ, more_than_two_haplotypes, genotype_list_loci_differ or locus_repeated_across_blocks."
          },
          "detail": {
            "type": "string"
          }
        }
      }
    },
    "counts": {
      "type": "object",
      "required": [
        "error",
        "warning"
      ],
      "properties": {
        "error": {
          "type": "integer"
        },
        "warning": {
          "type": "integer"
        }
      }
    },
    "attribution": {
      "type": "string",
      "description": "Data attribution (IPD-IMGT/HLA, CC-BY-ND)."
    }
  },
  "required": [
    "release",
    "valid",
    "normalized_gl",
    "changed",
    "loci",
    "alleles",
    "issues",
    "counts"
  ]
}
🟡beta_signup(email, org, use_case, source)

Put a user on the free public beta's notification list for paid API keys. Ask before calling: it records the address they give you. Re-signing the same address is safe (status already_recorded). Someone who needs a higher rate limit today should email [email protected] for a beta key instead of waiting.

입력 스키마

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "maxLength": 254,
      "description": "The user's email address."
    },
    "org": {
      "type": "string",
      "maxLength": 120,
      "description": "Lab, company or institution (optional)."
    },
    "use_case": {
      "type": "string",
      "maxLength": 500,
      "description": "What they would use the API for (optional). No patient details."
    },
    "source": {
      "type": "string",
      "maxLength": 120,
      "description": "Where the signup came from, e.g. mcp (optional)."
    }
  },
  "required": [
    "email"
  ],
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "Always true; a rejected signup comes back as an error result."
    },
    "status": {
      "type": "string",
      "enum": [
        "recorded",
        "already_recorded"
      ],
      "description": "already_recorded: the address was already on the list. Both are success — do not retry."
    },
    "message": {
      "type": "string",
      "description": "What to tell the user, including how to get a beta key today."
    },
    "release": {
      "type": "string",
      "description": "IPD-IMGT/HLA release every verdict was computed against."
    }
  },
  "required": [
    "ok",
    "status",
    "message",
    "release"
  ]
}
⚪research_access(email, institution, use_case, expected_volume, source)

Apply for free HLA-Verify access for an academic or nonprofit lab. Ask before calling: it records the address, institution and use case you give it. Approval is manual: a person reads every application, so it is not instant and not guaranteed. If it is approved the applicant is emailed a single-use code that takes 100% off a subscription for 12 months at self-serve checkout, with no card and no contract. Re-applying with the same address is safe (status already_recorded) and never overwrites an application that has already been decided. Commercial labs should buy a tier at https://api.hlaverify.com/pricing instead.

입력 스키마

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "maxLength": 254,
      "description": "The applicant's email address. The approval code is sent here."
    },
    "institution": {
      "type": "string",
      "maxLength": 200,
      "description": "University, hospital, institute or nonprofit the work is done at."
    },
    "use_case": {
      "type": "string",
      "maxLength": 1000,
      "description": "What the research or teaching is, and what the API would be used for. This is what the decision is made on, so be specific. No patient details."
    },
    "expected_volume": {
      "type": "string",
      "maxLength": 120,
      "description": "Rough call or typing volume, e.g. 'about 20,000 typings a month' (optional)."
    },
    "source": {
      "type": "string",
      "maxLength": 120,
      "description": "Where the application came from, e.g. mcp (optional)."
    }
  },
  "required": [
    "email",
    "institution",
    "use_case"
  ],
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "Always true; a rejected application comes back as an error result."
    },
    "status": {
      "type": "string",
      "enum": [
        "recorded",
        "already_recorded"
      ],
      "description": "already_recorded: this address already has an application on file. Both are success; do not retry."
    },
    "message": {
      "type": "string",
      "description": "What to tell the user, including that approval is by hand and not instant."
    },
    "release": {
      "type": "string",
      "description": "IPD-IMGT/HLA release every verdict was computed against."
    }
  },
  "required": [
    "ok",
    "status",
    "message",
    "release"
  ]
}
🟢about

What this server is and is not, what to send it, benchmark evidence for why to use it, the beta state, and terms.

입력 스키마

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "release": {
      "type": "string",
      "description": "IPD-IMGT/HLA release every verdict was computed against."
    },
    "scope": {
      "type": "string"
    },
    "inputs": {
      "type": "string"
    },
    "why": {
      "type": "string"
    },
    "code": {
      "type": "string"
    },
    "api": {
      "type": "string"
    },
    "demo": {
      "type": "string"
    },
    "agents": {
      "type": "string"
    },
    "limits": {
      "type": "string"
    },
    "commercial": {
      "type": "string"
    },
    "disclaimer": {
      "type": "string"
    },
    "beta": {
      "type": "string"
    },
    "beta_key": {
      "type": "string"
    },
    "beta_signup": {
      "type": "string"
    },
    "research": {
      "type": "string"
    }
  },
  "required": [
    "name",
    "release"
  ]
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 10개
검증됨버전이 기록되지 않음도구 10개