HLA-Verify
Server Details
HLA nomenclature and match checks against a pinned IPD-IMGT/HLA release. No patient identifiers.
- Status
- Healthy
- Uptime
- 100.0% over 22 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- jasonbrelsford/verifiable-science-envs
- GitHub Stars
- 0
TDQS
Scored across 10 tools
Most tools have distinct purposes, but allele_info and normalize_allele overlap in accepting one allele name and returning normalized/factual information, and donor_compat and match_score both perform donor-recipient HLA analysis. Detailed descriptions help differentiate, so an agent can usually select correctly.
All tool names use consistent snake_case, which is the primary convention. However, the grammatical pattern is mixed: some are verb_noun (check_typing, normalize_allele) while others are noun_noun (allele_info, donor_compat), with one single-word name (about). This is a minor deviation from a uniform verb_noun pattern.
Ten tools is well within the ideal range for a focused HLA verification server. Each tool serves a clear purpose, covering core operations plus necessary meta functions like about, beta_signup, and research_access.
The surface covers single allele lookup, normalization, GL string validation, text scanning, typing QC, donor compatibility, and match scoring—a comprehensive set for HLA nomenclature and compatibility checking. Minor gaps exist, such as no dedicated tool for listing alleles by locus or retrieving release metadata, but agents can work around these.
Available Tools
10 toolsaboutARead-onlyIdempotentInspect
What this server is and is not, what to send it, benchmark evidence for why to use it, the beta state, and terms.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| api | No | |
| why | No | |
| beta | No | |
| code | No | |
| demo | No | |
| name | Yes | |
| scope | No | |
| agents | No | |
| inputs | No | |
| limits | No | |
| release | Yes | IPD-IMGT/HLA release every verdict was computed against. |
| beta_key | No | |
| research | No | |
| commercial | No | |
| disclaimer | No | |
| beta_signup | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint and idempotentHint, so safety is covered. The description adds meaningful behavioral context beyond that: it mentions benchmark evidence, beta state, and terms, which signal maturity, expected usage rationale, and legal constraints. This is useful context an agent cannot derive from annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence with no filler or redundant phrasing. It front-loads the core purpose ('what this server is and is not') and then efficiently lists the remaining content categories. Every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there are no inputs and an output schema exists, the description does not need to explain return values. It covers the essential decision-making information: what the server is, what to send, performance evidence, beta status, and terms. It is complete enough for an agent to invoke confidently, though a more explicit 'returns information about...' framing would make it fully unambiguous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the input schema already provides full coverage. The description's mention of 'what to send it' is contextually relevant but does not need to define any parameter semantics because there are none. Baseline 4 is appropriate for a no-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the tool as being about 'this server' and enumerates the content areas it covers: server identity, inputs, benchmark evidence, beta state, and terms. It is not a tautology and clearly distinguishes this informational endpoint from the sibling tools, which are all domain-specific biological operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used when an agent needs to understand what the server does, what to send it, and why it should be used, but it does not explicitly state when to use this tool versus the sibling alternatives. A direct 'use this to get server overview and limitations' statement would strengthen this.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
allele_infoARead-onlyIdempotentInspect
Look up one 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), group (a G or P group name: member count and sample), or deleted (successor). Reported shorthands are accepted as /v1/normalize accepts them — legacy spellings (A0101, Cw0702, Cw07:02), the XX code (A02:XX), two-field A02:01g, an optional HLA- prefix — and answer with the facts of the name they stand for plus resolves_to and a flag (deprecated_name, xx_code, lg_notation); an NMDP multiple allele code (A02:AB) returns mac_code, recognised but not expanded. Not found if the name has never existed in any release.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | An HLA allele name of any era: exact name, lower-resolution prefix, deleted name, G/P group, legacy colon-less name, XX code or lg notation. An allele string only, never a patient name, medical record number or other identifier. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | |
| note | No | mac_code: what a multiple allele code is and why it is not expanded. |
| flags | No | Present for a shorthand: deprecated_name (legacy spelling: colon-less A*0101, or the Cw locus label as in Cw*07:02), xx_code, lg_notation, or mac_code. Absent for a plain name. |
| detail | No | Present only when the name is not assigned in this release (and then no other field is). |
| status | No | assigned: an exact allele in this release; valid_prefix: a lower-resolution prefix of assigned alleles; group: a G or P group name (see group_type); deleted: withdrawn or renamed (see successor); mac_code: an NMDP multiple allele code (A*02:AB), recognised but not expanded or checked. |
| g_group | No | assigned: G group, or null. |
| ligands | No | Class I (A/B/C) ligand facts, aggregated over member alleles: 'ambiguous' when members disagree, 'unknown' when no residue data. |
| p_group | No | assigned: P group, or null. |
| release | No | IPD-IMGT/HLA release every verdict was computed against. |
| serology | No | assigned: WMDA serologic equivalents by column (non-empty columns only). |
| confirmed | No | assigned: confirmed (vs unconfirmed) allele. |
| successor | No | deleted: the current name, or null if none. |
| group_type | No | group: whether the name is a G group (identical exons 2+3 / exon 2) or a P group (identical peptide-binding domain). |
| attribution | No | Data attribution (IPD-IMGT/HLA, CC-BY-ND). |
| null_allele | No | assigned: true for an N (null, not expressed) allele. |
| resolves_to | No | Present when the name was a reported shorthand (legacy colon-less or Cw spelling, XX code, lg notation): the current-style name it stands for, whose facts this result carries. |
| first_release | No | assigned: first release the exact name appeared in. |
| members_count | No | valid_prefix / group: number of assigned alleles under the prefix or in the group. |
| members_sample | No | valid_prefix / group: up to 10 member alleles. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so safety is covered. The description adds genuine behavioral value on top: the shape of each result branch, the accompanying resolves_to and flag fields (deprecated_name, xx_code, lg_notation), that MAC codes are recognised but not expanded, and the not-found condition.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and the resolution branches are front-loaded, but the body is a single dense run-on packed with nested parentheticals and em-dash asides, which hurts scanability. Most clauses carry information, but the lack of sentence breaks costs it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be enumerated, yet the description still covers the resolution branches, flags, MAC-code caveat and the not-found case. Combined with full parameter coverage and annotations, an agent has everything needed to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With one param at 100% schema coverage the baseline is 3, but the description goes beyond the schema by detailing accepted legacy spellings, XX codes, lg notation, HLA- prefixes and MAC codes, and by clarifying what the resolved answer carries. It does not contradict the schema's explicit warning against patient identifiers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and scope ('look up one name in the pinned release and return what it is') and then enumerates the four possible resolutions (assigned, valid_prefix, group, deleted). This is far more specific than the sibling names alone and lets an agent tell it apart from normalize_allele and validate_gl_string.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains which name forms are accepted and ties them to /v1/normalize's behaviour, which implies usage context, but it never states when to choose this tool over siblings like normalize_allele or validate_gl_string, nor any exclusion beyond 'never existed in any release'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
beta_signupAIdempotentInspect
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 hello@hlaverify.com for a beta key instead of waiting.
| Name | Required | Description | Default |
|---|---|---|---|
| org | No | Lab, company or institution (optional). | |
| Yes | The user's email address. | ||
| source | No | Where the signup came from, e.g. mcp (optional). | |
| use_case | No | What they would use the API for (optional). No patient details. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | Always true; a rejected signup comes back as an error result. |
| status | Yes | already_recorded: the address was already on the list. Both are success — do not retry. |
| message | Yes | What to tell the user, including how to get a beta key today. |
| release | Yes | IPD-IMGT/HLA release every verdict was computed against. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark idempotentHint=true, and the description adds useful behavioral detail by confirming re-signing the same address is safe and yields status already_recorded. It also discloses the privacy-relevant behavior that the tool records the address the user provides, which goes beyond the annotation fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place: purpose, consent/privacy warning, idempotency reassurance, and an alternative path for urgent cases. No filler or redundant restatement of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple signup tool with a full schema, output schema, and idempotency annotation, the description covers purpose, consent, idempotent behavior, and the main exclusion. Optional parameters need no extra prose because the schema already describes them.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline of 3 applies. The description adds minimal parameter-specific meaning beyond associating 'email' with 'the address they give you'; the schema already documents all four parameters adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: putting a user on the free public beta's notification list for paid API keys. This clearly distinguishes the tool from all listed siblings, which are about allele/HLA matching and verification rather than signups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear when-to-use context ('Put a user on the free public beta's notification list') and an explicit when-not-to-use instruction (higher rate limit today -> email hello@hlaverify.com instead). It also adds a mandatory precondition: ask before calling because the address is recorded.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_typingARead-onlyIdempotentInspect
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": ["A01:01", "A02:01"], "B": [...], "DRB1": [...], ...} (any nomenclature era, G/P group names, A02:XX and two-field A02:01g included; NMDP MAC codes are flagged, not expanded; allele strings only, no patient identifiers).
| Name | Required | Description | Default |
|---|---|---|---|
| typing | Yes | locus -> up to 4 reported allele names. Allele strings only: never patient names, medical record numbers, dates of birth, or accession or case identifiers. |
Output Schema
| Name | Required | Description |
|---|---|---|
| loci | Yes | Reported locus key -> one row per reported allele, in input order. |
| valid | Yes | true when there are no error-severity issues. Gate on this before using the typing. |
| counts | Yes | |
| drb345 | Yes | DRB3/4/5 expected from DRB1 vs reported; null when DRB1 is not typed. |
| issues | Yes | |
| profile | Yes | |
| release | Yes | IPD-IMGT/HLA release every verdict was computed against. |
| attribution | No | Data attribution (IPD-IMGT/HLA, CC-BY-ND). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a safe, idempotent, closed-world read, and the description goes well beyond them: it discloses exactly which conditions are flagged, that NMDP MAC codes are flagged rather than expanded, and that it resolves against a pinned release. The no-identifiers constraint is also stated behaviorally.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: the operations come first, then the structural example, then the constraints. The PII warning is repeated from the schema description, which is the one clause that does not fully earn its place, but overall the length is justified by the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with an output schema and rich annotations, the description covers scope, accepted inputs, flagging behavior, and the clinical-interpretation boundary. Given the output schema exists, no return-value explanation is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real syntax information the schema lacks: accepted nomenclature eras, G/P group names, A*02:XX and two-field A*02:01g forms, the locus->allele map example, and that MAC codes are not expanded. That meaningfully reduces caller ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource: QC-check one HLA typing across all loci against the pinned release. The enumerated checks (resolution, locus mismatch, B-leader/KIR-ligand computation) make it unmistakably distinct from siblings like validate_gl_string and normalize_allele.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly scopes usage with 'Nomenclature and internal-consistency checking of the report, not clinical interpretation,' which is a clear when-not boundary. However, it never names a sibling tool for the adjacent tasks (single-allele normalization, GL string validation), so routing among alternatives is left to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
donor_compatARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| donor | Yes | locus -> up to 4 reported allele names. Allele strings only: never patient names, medical record numbers, dates of birth, or accession or case identifiers. | |
| recipient | Yes | locus -> up to 4 reported allele names. Allele strings only: never patient names, medical record numbers, dates of birth, or accession or case identifiers. |
Output Schema
| Name | Required | Description |
|---|---|---|
| issues | Yes | |
| release | Yes | IPD-IMGT/HLA release every verdict was computed against. |
| b_leader | Yes | |
| attribution | No | Data attribution (IPD-IMGT/HLA, CC-BY-ND). |
| donor_valid | Yes | Donor typing QC had no errors. |
| kir_ligands | Yes | |
| recipient_valid | Yes | Recipient typing QC had no errors. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds meaningful behavioral context: it applies two specific published rule sets, computes over each side's full typing QC, and explicitly states it is decision support only and not a medical device. This goes beyond the annotations and clarifies the tool's limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose, then details the rule sets, then the input format, then the safety disclaimer. Every sentence earns its place, though the input format sentence is slightly redundant with the schema's parameter descriptions. Still, it's efficient and well-ordered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return values need not be explained. The description covers the rule sets, input constraints, and safety limitations. It doesn't mention edge cases like what happens with missing loci or multiple mismatches, but for a read-only decision-support tool with a rich schema and output schema, the description is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters thoroughly, including the 'allele strings only' privacy constraint. The description reinforces the privacy constraint and the structure (locus -> allele arrays), but doesn't add new parameter-level meaning beyond what the schema provides. Baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('compatibility under two published rule sets'), a precise resource (HLA-B leader match and KIR ligand class comparison), and explicitly distinguishes itself from ranking/recommendation tools. It also names the sibling it is not ('does not rank or recommend a donor'), which separates it from match_score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states what it computes and explicitly says it does not rank or recommend, which implies when not to use it. It does not explicitly name alternatives like match_score or check_typing, but the 'does not rank or recommend' exclusion gives clear usage boundaries. A 4 is appropriate because the context is clear but no explicit alternative tool is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
match_scoreARead-onlyIdempotentInspect
Count a donor-recipient HLA match by the published counting rules (R1-R6): allele arithmetic over chromosomes, not a donor recommendation. recipient/donor: {"A": ["A01:01","A02:01"], "B": [...], ...} (two reported alleles per locus, any nomenclature era including G/P group names such as A*02:01:01G; 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.
| Name | Required | Description | Default |
|---|---|---|---|
| donor | Yes | locus -> up to 4 reported allele names. Allele strings only: never patient names, medical record numbers, dates of birth, or accession or case identifiers. | |
| framework | No | 8/8 | |
| recipient | Yes | locus -> up to 4 reported allele names. Allele strings only: never patient names, medical record numbers, dates of birth, or accession or case identifiers. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | 'matched/total' over the resolvable loci only, or UNRESOLVABLE when none resolves. Check verdicts for 'potential' loci before quoting it as a confident count. |
| flags | Yes | e.g. resolution_insufficient, null_allele, null_allele_mismatch. |
| release | Yes | IPD-IMGT/HLA release every verdict was computed against. |
| verdicts | Yes | Framework locus -> verdict. |
| framework | Yes | |
| attribution | No | Data attribution (IPD-IMGT/HLA, CC-BY-ND). |
| gvh_mismatches | Yes | Graft-versus-host mismatches over non-potential loci. |
| hvg_mismatches | Yes | Host-versus-graft mismatches over non-potential loci. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint=false), so the description earns credit for adding real behavioral context: 'unresolvable typing yields potential, never a confident count' tells the agent how ambiguous input is handled. It also discloses return contents, though an output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and the key caveat before detailing input shape and return values. It is dense and slightly run-on across the framework and return sentences, but every clause carries information and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with nested objects, an output schema, and rich annotations, the description is largely complete: it covers input format, framework choices, the R1-R6 rule basis, and the ambiguous-input fallback. Minor gaps remain around ordering/dominance of rules and what the flags specifically mean, but the essentials for correct invocation are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 67% schema coverage the schema documents recipient/donor and the framework enum, but the description meaningfully extends this: two reported alleles per locus, tolerance across nomenclature eras including G/P group names, and allele-strings-only constraint. This adds syntax and format detail beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (count a donor-recipient HLA match) and pins the method to the published R1-R6 rules. Crucially, it distinguishes itself from the sibling donor_compat by declaring it is 'allele arithmetic... not a donor recommendation', so an agent can route correctly without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly frames the use context (counting by published rules, not recommending a donor) and names acceptable framework values, which helps the agent choose this over donor_compat. However, it does not name specific alternatives (e.g., check_typing, validate_gl_string) or state explicit when-not conditions beyond the single scope exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
normalize_alleleARead-onlyIdempotentInspect
Normalize one reported HLA allele name (any era or reporting shorthand: legacy A0101, Cw0702 or Cw07:02, G/P group names, A02:XX, two-field A02:01g, optional HLA- prefix) to current 2-field form, with G group, P group, serologic equivalent, and flags. NMDP MAC codes (A02:AB) are recognised but not expanded (flag mac_code).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | One reported HLA allele name, any nomenclature era. An allele string only, never a patient name, medical record number or other identifier. |
Output Schema
| Name | Required | Description |
|---|---|---|
| flags | Yes | e.g. deprecated_name, nonexistent_allele, null_allele, g_group_name, p_group_name, xx_code, lg_notation, mac_code. |
| g_group | Yes | G group; NONE (no group), AMBIGUOUS (members differ) or UNRESOLVABLE. |
| reported | Yes | The input, verbatim. |
| current_name | Yes | Current full name in the pinned release, or UNRESOLVABLE. |
| allele_2field | Yes | Current 2-field form, or UNRESOLVABLE. Never present an UNRESOLVABLE name as an allele. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and closed-world, so the safety profile is covered. The description adds genuine behavioral detail beyond that: MAC codes are recognized but deliberately not expanded and are signalled via a mac_code flag, and the output carries G group, P group, serologic equivalent, and flags.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the verb, the input, and the output form, then qualifies the MAC-code caveat at the end. Every clause carries information, though the parenthetical format list is slightly heavy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, yet the description still summarizes what comes back (2-field form, groups, serologic equivalent, flags). Combined with full param coverage and annotations, an agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and there is a single parameter, so the baseline is 3. The description nonetheless adds real value over the schema's generic 'any nomenclature era' by listing concrete accepted forms (A*0101, Cw*07:02, A*02:XX, A*02:01g, optional HLA- prefix).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (normalize) and resource (one reported HLA allele name), plus the exact output form (current 2-field form with G/P group and serologic equivalent). This distinguishes it clearly from siblings like allele_info and validate_gl_string, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description scopes usage tightly ('one reported HLA allele name', 'any era or reporting shorthand') and enumerates accepted input styles, which tells an agent when this tool applies. It does not, however, name an alternative or state when another sibling (e.g. allele_info) should be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
research_accessAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | The applicant's email address. The approval code is sent here. | ||
| source | No | Where the application came from, e.g. mcp (optional). | |
| use_case | Yes | 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. | |
| institution | Yes | University, hospital, institute or nonprofit the work is done at. | |
| expected_volume | No | Rough call or typing volume, e.g. 'about 20,000 typings a month' (optional). |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | Always true; a rejected application comes back as an error result. |
| status | Yes | already_recorded: this address already has an application on file. Both are success; do not retry. |
| message | Yes | What to tell the user, including that approval is by hand and not instant. |
| release | Yes | IPD-IMGT/HLA release every verdict was computed against. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations (readOnlyHint=false, idempotentHint=true) by disclosing that it records submitted details, that approval involves a human reviewer, that successful applicants receive a single-use 100% discount code, and that re-applying with the same address is safe and never overwrites decided applications. This fully aligns with the idempotentHint and adds rich behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is slightly verbose but every sentence provides necessary context: purpose, privacy warning, manual process, outcome, idempotency, and commercial exclusion. It is front-loaded with the main purpose and then covers critical caveats, though some sentences could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 params, manual approval, side effects), the description is complete for an agent to decide whether and how to call it. It explains the flow, safety of re-application, and expected outcomes; the existence of an output schema covers return values, so no major gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema fully documents each parameter. The description adds only that the address, institution and use case are recorded, which is behavioral rather than semantic. It does not enhance understanding of the optional source or expected_volume parameters beyond the schema, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Apply for free HLA-Verify access') and narrows the audience to academic or nonprofit labs, clearly distinguishing it from commercial purchase. It also differentiates itself from siblings like beta_signup by focusing on free research access with manual review.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly instructs the agent to 'Ask before calling' because the tool records personal information, sets expectations that approval is manual, non-instant, and not guaranteed, and directs commercial labs to an alternative pricing page. This gives clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_gl_stringARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| gl | Yes | GL String to validate and normalize. Allele names and GL grammar only, never patient identifiers. |
Output Schema
| Name | Required | Description |
|---|---|---|
| loci | Yes | |
| valid | Yes | true when there are no error-severity issues. |
| counts | Yes | |
| issues | Yes | |
| alleles | Yes | Each distinct allele token, in first-seen order. |
| changed | Yes | normalized_gl differs from the trimmed input. |
| release | Yes | IPD-IMGT/HLA release every verdict was computed against. |
| attribution | No | Data attribution (IPD-IMGT/HLA, CC-BY-ND). |
| normalized_gl | Yes | The GL String with outdated names replaced by current ones. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly and idempotent safety. The description adds behavioral specifics: it flags outdated/unresolvable names and structural issues, normalizes the string, and reiterates it only checks grammar/nomenclature, not patient data. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded with the purpose. The enumeration of specific structural problems is valuable but somewhat lengthy; still, every sentence contributes necessary detail. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and comprehensive parameter documentation, the description covers all essential behavior: what is validated, what is returned, and the constraint on input. Slightly more detail on error handling could be added, but the tool is well-specified overall.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a clear description of the 'gl' parameter. The underlying tool description further enriches meaning by explaining the GL grammar and the validation behavior, surpassing what the schema alone provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Validate and normalize'), a precise resource ('GL String'), and explains the grammar ('Genotype List, ^ | + ~ / grammar'). It enumerates exactly what is checked (unresolvable names, structural problems) and distinguishes itself from siblings like 'normalize_allele' by focusing on list-level validation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it is for grammar and nomenclature checking only, and explicitly tells the agent to send allele names, not patient identifiers. However, it does not name alternative tools or state when NOT to use this tool, leaving some ambiguity relative to siblings like 'verify_text'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_textARead-onlyIdempotentInspect
Scan HLA typing report text, or model output about HLA, for allele-shaped tokens and classify each one: valid / legacy spelling such as A0201 or Cw0702 (valid, with modern form and flag deprecated_name) / G-P group / deleted (with successor) / fabricated / NMDP MAC code (seen, not expanded) / KIR name (out of scope, not checked). 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.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| clean | Yes | The guardrail: true only when no token is hallucinated, fabricated_group or deleted. Gate on this before presenting the text. NMDP multiple allele codes (counts.mac_code) and KIR allele names (counts.out_of_scope) are not checked — treat them as unverified. |
| counts | Yes | Number of distinct tokens per status. |
| tokens | Yes | Each distinct allele-shaped token found, sorted by token. |
| release | Yes | IPD-IMGT/HLA release every verdict was computed against. |
| attribution | No | Data attribution (IPD-IMGT/HLA, CC-BY-ND). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-open-world), and the description adds real context on top: the check is against a pinned IPD-IMGT/HLA release, KIR names are out of scope and left unchecked, MAC codes are recognized but not expanded, and patient identifiers are neither needed nor wanted. It stops short of describing rate limits, error behavior, or how results map to the classification buckets.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action is front-loaded and every sentence carries information: the classification taxonomy, the 'not interpretation' scope boundary, the usage trigger, and the de-identification requirement. The slash-delimited classification list is dense and slightly hard to parse, but nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and the description still covers everything an agent needs before calling: what is scanned, what the categories mean, the reference-release pinning, the KIR/MAC edge cases, and the de-identification obligation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage, so the schema already carries the semantics. The description restates the de-identification instruction rather than adding format, size, or content-shape detail beyond what the schema says, which is the baseline case for a fully documented parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (scan/classify) and a specific resource (free-text HLA typing report or model output), then enumerates the exact output classes (valid, legacy, G-P group, deleted, fabricated, MAC, KIR). It also implicitly separates itself from structured-input siblings like validate_gl_string or normalize_allele by scoping itself to raw text, and states the boundary 'not interpretation of a case.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states when to reach for it ('Use on any AI-generated or transcribed content mentioning HLA') and the precondition for sending input ('Send the HLA content only, with patient identifiers removed first'). It does not name an alternative sibling or an explicit when-not condition, so it falls short of a full routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
allele_info2 fields changed- changed
Output schema / properties / flags / descriptionPrevious value: -"Present for a shorthand: deprecated_name (legacy colon-less name), xx_code, lg_notation, or mac_code. Absent for a plain name."New value: +"Present for a shorthand: deprecated_name (legacy spelling: colon-less A*0101, or the Cw locus label as in Cw*07:02), xx_code, lg_notation, or mac_code. Absent for a plain name." - changed
Output schema / properties / resolves_to / descriptionPrevious value: -"Present when the name was a reported shorthand (legacy colon-less, XX code, lg notation): the current-style name it stands for, whose facts this result carries."New value: +"Present when the name was a reported shorthand (legacy colon-less or Cw spelling, XX code, lg notation): the current-style name it stands for, whose facts this result carries."
- Changed
verify_text1 field changed- changed
Output schema / properties / tokens / items / properties / status / descriptionPrevious value: -"valid: assigned (or a valid prefix; A*02:XX and two-field A*02:01g are checked by the name they abbreviate); 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; mac_code: an NMDP multiple allele code, reporting shorthand this service does not expand; out_of_scope: a KIR allele name (IPD-KIR), outside IPD-IMGT/HLA and not checked."New value: +"valid: assigned (or a valid prefix; A*02:XX and two-field A*02:01g are checked by the name they abbreviate, and a legacy spelling such as A*0201, Cw*0702 or Cw*07:02 by the current name it stands for, with flag deprecated_name); 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; mac_code: an NMDP multiple allele code, reporting shorthand this service does not expand; out_of_scope: a KIR allele name (IPD-KIR), outside IPD-IMGT/HLA and not checked."
2 tool updates
- Changed
allele_info6 fields changed- changed
Input schema / properties / name / descriptionPrevious value: -"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."New value: +"An HLA allele name of any era: exact name, lower-resolution prefix, deleted name, G/P group, legacy colon-less name, XX code or lg notation. An allele string only, never a patient name, medical record number or other identifier." - added
Output schema / properties / flagsAdded value: +{ + "description": "Present for a shorthand: deprecated_name (legacy colon-less name), xx_code, lg_notation, or mac_code. Absent for a plain name.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / noteAdded value: +{ + "description": "mac_code: what a multiple allele code is and why it is not expanded.", + "type": "string" +} - added
Output schema / properties / resolves_toAdded value: +{ + "description": "Present when the name was a reported shorthand (legacy colon-less, XX code, lg notation): the current-style name it stands for, whose facts this result carries.", + "type": "string" +} - changed
Output schema / properties / status / descriptionPrevious value: -"assigned: an exact allele in this release; valid_prefix: a lower-resolution prefix of assigned alleles; group: a G or P group name (see group_type); deleted: withdrawn or renamed (see successor)."New value: +"assigned: an exact allele in this release; valid_prefix: a lower-resolution prefix of assigned alleles; group: a G or P group name (see group_type); deleted: withdrawn or renamed (see successor); mac_code: an NMDP multiple allele code (A*02:AB), recognised but not expanded or checked." - changed
Output schema / properties / status / enumPrevious value: -[ - "assigned", - "valid_prefix", - "group", - "deleted" -]New value: +[ + "assigned", + "valid_prefix", + "group", + "deleted", + "mac_code" +]
- Changed
verify_text5 fields changed- changed
Output schema / properties / clean / descriptionPrevious value: -"The guardrail: true only when no token is hallucinated, fabricated_group or deleted. Gate on this before presenting the text. NMDP multiple allele codes (counts.mac_code) are not checked — treat them as unverified."New value: +"The guardrail: true only when no token is hallucinated, fabricated_group or deleted. Gate on this before presenting the text. NMDP multiple allele codes (counts.mac_code) and KIR allele names (counts.out_of_scope) are not checked — treat them as unverified." - added
Output schema / properties / counts / properties / out_of_scopeAdded value: +{ + "description": "KIR allele names (KIR3DL1*001) seen; a gene family outside IPD-IMGT/HLA, not checked.", + "type": "integer" +} - changed
Output schema / properties / counts / requiredPrevious value: -[ - "valid", - "deleted", - "group", - "fabricated_group", - "hallucinated", - "mac_code" -]New value: +[ + "valid", + "deleted", + "group", + "fabricated_group", + "hallucinated", + "mac_code", + "out_of_scope" +] - changed
Output schema / properties / tokens / items / properties / status / descriptionPrevious value: -"valid: assigned (or a valid prefix; A*02:XX and two-field A*02:01g are checked by the name they abbreviate); 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; mac_code: an NMDP multiple allele code, reporting shorthand this service does not expand."New value: +"valid: assigned (or a valid prefix; A*02:XX and two-field A*02:01g are checked by the name they abbreviate); 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; mac_code: an NMDP multiple allele code, reporting shorthand this service does not expand; out_of_scope: a KIR allele name (IPD-KIR), outside IPD-IMGT/HLA and not checked." - changed
Output schema / properties / tokens / items / properties / status / enumPrevious value: -[ - "valid", - "group", - "deleted", - "fabricated_group", - "hallucinated", - "mac_code" -]New value: +[ + "valid", + "group", + "deleted", + "fabricated_group", + "hallucinated", + "mac_code", + "out_of_scope" +]
3 tool updates
- Changed
allele_info5 fields changed- added
Output schema / properties / group_typeAdded value: +{ + "description": "group: whether the name is a G group (identical exons 2+3 / exon 2) or a P group (identical peptide-binding domain).", + "enum": [ + "G", + "P" + ], + "type": "string" +} - changed
Output schema / properties / members_count / descriptionPrevious value: -"valid_prefix: number of assigned alleles under the prefix."New value: +"valid_prefix / group: number of assigned alleles under the prefix or in the group." - changed
Output schema / properties / members_sample / descriptionPrevious value: -"valid_prefix: up to 10 member alleles."New value: +"valid_prefix / group: up to 10 member alleles." - changed
Output schema / properties / status / descriptionPrevious value: -"assigned: an exact allele in this release; valid_prefix: a lower-resolution prefix of assigned alleles; deleted: withdrawn or renamed (see successor)."New value: +"assigned: an exact allele in this release; valid_prefix: a lower-resolution prefix of assigned alleles; group: a G or P group name (see group_type); deleted: withdrawn or renamed (see successor)." - changed
Output schema / properties / status / enumPrevious value: -[ - "assigned", - "valid_prefix", - "deleted" -]New value: +[ + "assigned", + "valid_prefix", + "group", + "deleted" +]
- Changed
normalize_allele1 field changed- changed
Output schema / properties / flags / descriptionPrevious value: -"e.g. deprecated_name, nonexistent_allele, null_allele."New value: +"e.g. deprecated_name, nonexistent_allele, null_allele, g_group_name, p_group_name, xx_code, lg_notation, mac_code."
- Changed
verify_text5 fields changed- changed
Output schema / properties / clean / descriptionPrevious value: -"The guardrail: true only when no token is hallucinated, fabricated_group or deleted. Gate on this before presenting the text."New value: +"The guardrail: true only when no token is hallucinated, fabricated_group or deleted. Gate on this before presenting the text. NMDP multiple allele codes (counts.mac_code) are not checked — treat them as unverified." - added
Output schema / properties / counts / properties / mac_codeAdded value: +{ + "description": "NMDP multiple allele codes (A*02:AB) seen but not expanded.", + "type": "integer" +} - changed
Output schema / properties / counts / requiredPrevious value: -[ - "valid", - "deleted", - "group", - "fabricated_group", - "hallucinated" -]New value: +[ + "valid", + "deleted", + "group", + "fabricated_group", + "hallucinated", + "mac_code" +] - changed
Output schema / properties / tokens / items / properties / status / descriptionPrevious value: -"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."New value: +"valid: assigned (or a valid prefix; A*02:XX and two-field A*02:01g are checked by the name they abbreviate); 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; mac_code: an NMDP multiple allele code, reporting shorthand this service does not expand." - changed
Output schema / properties / tokens / items / properties / status / enumPrevious value: -[ - "valid", - "group", - "deleted", - "fabricated_group", - "hallucinated" -]New value: +[ + "valid", + "group", + "deleted", + "fabricated_group", + "hallucinated", + "mac_code" +]
2 tool updates
- Changed
about1 field changed- added
Output schema / properties / researchAdded value: +{ + "type": "string" +}
- Added
research_access
1 tool update
- Changed
about1 field changed- added
Output schema / properties / limitsAdded value: +{ + "type": "string" +}
9 tool updates
- Changed
about2 fields changed- added
Output schema / properties / inputsAdded value: +{ + "type": "string" +} - added
Output schema / properties / scopeAdded value: +{ + "type": "string" +}
- Changed
allele_info1 field changed- changed
Input schema / properties / name / descriptionPrevious value: -"Exact allele, prefix, or deleted name."New value: +"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."
- Changed
beta_signup1 field changed- changed
Input schema / properties / use_case / descriptionPrevious value: -"What they would use the API for (optional)."New value: +"What they would use the API for (optional). No patient details."
- Changed
check_typing1 field changed- changed
Input schema / properties / typing / descriptionPrevious value: -"locus -> up to 4 reported alleles"New value: +"locus -> up to 4 reported allele names. Allele strings only: never patient names, medical record numbers, dates of birth, or accession or case identifiers."
- Changed
donor_compat2 fields changed- changed
Input schema / properties / donor / descriptionPrevious value: -"locus -> up to 4 reported alleles"New value: +"locus -> up to 4 reported allele names. Allele strings only: never patient names, medical record numbers, dates of birth, or accession or case identifiers." - changed
Input schema / properties / recipient / descriptionPrevious value: -"locus -> up to 4 reported alleles"New value: +"locus -> up to 4 reported allele names. Allele strings only: never patient names, medical record numbers, dates of birth, or accession or case identifiers."
- Changed
match_score2 fields changed- changed
Input schema / properties / donor / descriptionPrevious value: -"locus -> up to 4 reported alleles"New value: +"locus -> up to 4 reported allele names. Allele strings only: never patient names, medical record numbers, dates of birth, or accession or case identifiers." - changed
Input schema / properties / recipient / descriptionPrevious value: -"locus -> up to 4 reported alleles"New value: +"locus -> up to 4 reported allele names. Allele strings only: never patient names, medical record numbers, dates of birth, or accession or case identifiers."
- Changed
normalize_allele1 field changed- changed
Input schema / properties / name / descriptionPrevious value: -"Reported allele name, any nomenclature era."New value: +"One reported HLA allele name, any nomenclature era. An allele string only, never a patient name, medical record number or other identifier."
- Changed
validate_gl_string1 field changed- changed
Input schema / properties / gl / descriptionPrevious value: -"GL String to validate and normalize."New value: +"GL String to validate and normalize. Allele names and GL grammar only, never patient identifiers."
- Changed
verify_text1 field changed- changed
Input schema / properties / text / descriptionPrevious value: -"Free text to scan."New value: +"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."
2 tool updates
- Changed
about3 fields changed- added
Output schema / properties / betaAdded value: +{ + "type": "string" +} - added
Output schema / properties / beta_keyAdded value: +{ + "type": "string" +} - added
Output schema / properties / beta_signupAdded value: +{ + "type": "string" +}
- Added
beta_signup
8 tool updates
- First observed
about - First observed
allele_info - First observed
check_typing - First observed
donor_compat - First observed
match_score - First observed
normalize_allele - First observed
validate_gl_string - First observed
verify_text
Related MCP Connectors
dbSNP refSNP records and HGVS/SPDI/rsID normalization for human genetic variants, from NCBI…
MCP gateway federating 22 biomedical MCP servers behind one endpoint: gnomAD, ClinVar, HPO, VEP.
CIViC — Clinical Interpretation of Variants in Cancer.
Diagnoses, drugs & lab codes: ICD-11, LOINC, RxNorm, MeSH, ATC, CID-10. 33 tools, MIT.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables real-time pharmacogenomics analysis, including variant clinical significance, drug-gene interactions, and dosing guidelines, by connecting to ClinVar, PharmGKB, gnomAD, and other databases.1MIT
- AlicenseAqualityAmaintenanceGrounds gene-nomenclature work in the HUGO Gene Nomenclature Committee (HGNC) dataset, enabling resolution of gene symbols and IDs to canonical HGNC identifiers, plus cross-references and batch operations.9MIT
- FlicenseNot gradedqualityCmaintenanceEnables resolving genetic variant identifiers (HGVS, dbSNP, ClinVar, gnomAD) to stable ClinGen Allele Registry IDs (CA#) and cross-references, providing a canonical allele identity across genome builds.-
- AlicenseNot gradedqualityDmaintenanceA local-first MCP server that annotates whole-genome VCF files and lets you query pharmacogenomics, disease risk, and carrier status through natural language.6MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.