HLA-Verify
HLA nomenclature and match checks against a pinned IPD-IMGT/HLA release. No patient identifiers.
사용해야 할까요
품질 및 안전성
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`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"
]
}커뮤니티
증거