_ registry / mcp streamable-http · checked 22m ago

hla-verify

https://api.hlaverify.com

Registry code: a3339bdeef35c29d

api record

Nomenclature and reference-release validation for HLA: allele names, typing-report consistency and match arithmetic, checked against a pinned IPD-IMGT/HLA release. No LLM inside: every verdict is a table lookup. This is not a diagnostic aid and not clinical decision support; it does not interpret a case or recommend a donor. What to send: allele names, typing strings, GL strings and report text about HLA typing. What never to send: patient identifiers of any kind, including names, medical record numbers, dates of birth, accession or case identifiers, and other patient details. The service…

endpoint
https://api.hlaverify.com/mcp
protocol
streamable-http ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is hla-verify live?
Yes — it answered the hub's last check (checked 22m ago). It answered 100% of checks over the last 30 days.
Is hla-verify free to use?
Yes — the hub reached it with no key and no payment.
What tools does hla-verify have?
15 tools: pgx_lookup, validate_gl_string, release_diff, research_access, normalize_allele, check_typing, donor_compat, translate_names, ….
Is hla-verify safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
99.5%

90 days 99.7%· all time 99.7%

latency
151ms

last good check

priced tools
0

of 15 tools

_ answered our checks, 90 days 310 checks · signed record
  • degraded → live
  • live → degraded· timeout after 20000ms
  • down → live
  • unknown → live
_ what it is for
used for
  • validate an hla allele name
  • check an hla typing report
  • score donor-recipient hla match
  • validate a gl string
takes → gives
text → data
tools
8 reads2 changes data
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

_ what it can do 15 tools
1 open 14 never probed 1 of 15 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • about reads open 11h ago

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

    mcp-tool

    {
      "type": "object",
      "properties": {},
      "additionalProperties": false
    }
    arguments 5 lines
  • pgx_lookup unknown 3h ago

    Which drugs an HLA typing carries a published pharmacogenomic association for. Looks each allele up in hla-pgx-open (CPIC guidelines + PharmGKB clinical annotations, CC BY-SA, snapshot date in every answer) after normalizing the name first, so any era or shorthand works (A*3101, B*5701, HLA-B*15:02:01G) and every conversion leaves a flag. Returns per allele the current name, the two-field form, the flags and the associations (source, drug, evidence level, CPIC testing recommendation, implication, recommendation, guideline or annotation URL, PMIDs), plus summary.actionable: the CPIC level-A, allele-positive rows. Guideline lookup over published CPIC and PharmGKB associations, keyed by two-field HLA allele. Decision support only; not a medical device. After an allogeneic transplant the recipient's blood carries the donor's genome, and which genome should drive an HLA-mediated drug alert is an open question (NCT06856226); this lookup reports both and decides nothing. Allele strings only, no patient identifiers.

    mcp-tool

    {
      "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"
            }
          }
        },
        "alleles": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 64
          },
          "maxItems": 96,
          "description": "A flat list of reported allele names instead of a typing. Send exactly one of typing or alleles."
        }
      },
      "additionalProperties": false
    }
    arguments 25 lines
  • validate_gl_string reads unknown 18h ago

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "gl"
      ],
      "properties": {
        "gl": {
          "type": "string",
          "maxLength": 100000,
          "description": "GL String to validate and normalize. Allele names and GL grammar only, never patient identifiers."
        }
      },
      "additionalProperties": false
    }
    arguments 14 lines
  • release_diff unknown 18h ago

    Which HLA allele names were added, removed (with the deletion reason and successor) and renamed between two IPD-IMGT/HLA releases, optionally for one locus. Counts are complete; each list is cut at `limit` and `truncated` says so. Use it to see what a release update changes before re-running or re-reporting typings.

    mcp-tool

    {
      "type": "object",
      "required": [
        "from",
        "to"
      ],
      "properties": {
        "to": {
          "type": "string",
          "maxLength": 16,
          "description": "An IPD-IMGT/HLA release, like \"3.40.0\" (1.05.0 to the current one)."
        },
        "from": {
          "type": "string",
          "maxLength": 16,
          "description": "An IPD-IMGT/HLA release, like \"3.40.0\" (1.05.0 to the current one)."
        },
        "limit": {
          "type": "integer",
          "maximum": 5000,
          "minimum": 1,
          "description": "Maximum items per list (default 500)."
        },
        "locus": {
          "type": "string",
          "maxLength": 8,
          "description": "One locus, like \"A\" or \"DRB1\"."
        }
      },
      "additionalProperties": false
    }
    arguments 31 lines
  • research_access changes data unknown never probed

    Get the user a free HLA-Verify API key, instantly. HLA-Verify is free for anyone: the key comes back in this result (status issued, field key) with 1,000 calls/day, 250 typings per call and 60 requests/minute; the user sends it as the X-API-Key header (or connects this MCP server with it). Ask before calling: it stores the email address with the key, used for service notices only. The key is shown once: give it to the user straight away. One key per address; asking again returns already_issued and never the key (lost keys: [email protected]). Disposable inboxes are refused. Verified labs that need more can set tier "lab" with institution and use_case to apply for the Lab tier (10,000 calls/day, 5,000 typings per call): that is reviewed, and an approved key is emailed.

    mcp-tool

    {
      "type": "object",
      "required": [
        "email"
      ],
      "properties": {
        "tier": {
          "enum": [
            "lab"
          ],
          "type": "string",
          "description": "Omit for a free key now. \"lab\" applies for the Lab tier instead (institution and use_case required)."
        },
        "email": {
          "type": "string",
          "maxLength": 254,
          "description": "The user's email address. Stored with the key; service notices only."
        },
        "source": {
          "type": "string",
          "maxLength": 120,
          "description": "Where the request came from, e.g. mcp (optional)."
        },
        "use_case": {
          "type": "string",
          "maxLength": 1000,
          "description": "What the API would be used for (optional; required with tier lab, where the decision is made on it). No patient details."
        },
        "institution": {
          "type": "string",
          "maxLength": 200,
          "description": "Lab, hospital, university, registry or company (optional; required with tier lab)."
        },
        "expected_volume": {
          "type": "string",
          "maxLength": 120,
          "description": "Rough call or typing volume, e.g. 'about 20,000 typings a month' (optional)."
        }
      },
      "additionalProperties": false
    }
    arguments 41 lines
  • normalize_allele reads unknown 3h ago

    Normalize one reported HLA allele name (any era or reporting shorthand: legacy A*0101, Cw*0702 or Cw*07:02, G/P group names, A*02:XX, two-field A*02:01g, optional HLA- prefix) to current 2-field form, with G group, P group, serologic equivalent, and flags. NMDP MAC codes (A*02:AB) are recognised but not expanded (flag mac_code). A name that does not exist comes back UNRESOLVABLE (flag nonexistent_allele), never corrected to a nearby real one.

    mcp-tool

    {
      "type": "object",
      "required": [
        "name"
      ],
      "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."
        }
      },
      "additionalProperties": false
    }
    arguments 14 lines
  • check_typing reads unknown 14h ago

    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, G/P group names, A*02:XX and two-field A*02:01g included; NMDP MAC codes are flagged, not expanded; allele strings only, no patient identifiers).

    mcp-tool

    {
      "type": "object",
      "required": [
        "typing"
      ],
      "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"
            }
          }
        }
      },
      "additionalProperties": false
    }
    arguments 19 lines
  • donor_compat reads unknown 14h ago

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "recipient",
        "donor"
      ],
      "properties": {
        "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"
            }
          }
        },
        "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"
            }
          }
        }
      },
      "additionalProperties": false
    }
    arguments 30 lines
  • translate_names unknown 14h ago

    Translate HLA allele names from one IPD-IMGT/HLA release to another, through each allele's HLA ID, using the official Allelelist_history.txt (every release since 1.05.0). Give the names as they were written in release `from` (omit `from` to accept a name used in any release); `to` defaults to the current release. Each row says unchanged, renamed (to_name), deleted (reason, successor and its name in `to`), not_yet_named, not_in_from_release, ambiguous (each allele listed) or unknown. Use it when data typed under an older release has to be compared with or reported under a newer one. Lab shorthand (B*1501, A*02:XX) belongs in normalize_allele first. Allele strings only, no patient identifiers.

    mcp-tool

    {
      "type": "object",
      "required": [
        "names"
      ],
      "properties": {
        "to": {
          "type": "string",
          "maxLength": 16,
          "description": "An IPD-IMGT/HLA release, like \"3.40.0\" (1.05.0 to the current one)."
        },
        "from": {
          "type": "string",
          "maxLength": 16,
          "description": "An IPD-IMGT/HLA release, like \"3.40.0\" (1.05.0 to the current one)."
        },
        "names": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 64
          },
          "maxItems": 5000,
          "minItems": 1,
          "description": "Allele names exactly as written in the `from` release."
        }
      },
      "additionalProperties": false
    }
    arguments 29 lines
  • beta_signup changes data unknown never probed

    Put a user on the beta notification list: one email when anything about early access changes. 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 get a free key with research_access: it is issued instantly.

    mcp-tool

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

    Every name the allele behind an HLA name has had, release by release since IPD-IMGT/HLA 1.05.0: its HLA ID, current name, the first and last release that used this name, the full timeline of names, and the deletion note if the name was retired. `as_of` adds what it was called in that release. Use it to answer when a name appeared, changed or disappeared; a retired name is answered with its deletion note, and a name that never existed is refused with an error result, not guessed at. An allele string only, no patient identifiers.

    mcp-tool

    {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 64,
          "description": "An allele name as written in any release, like \"A*0101\"."
        },
        "as_of": {
          "type": "string",
          "maxLength": 16,
          "description": "An IPD-IMGT/HLA release, like \"3.40.0\" (1.05.0 to the current one)."
        }
      },
      "additionalProperties": false
    }
    arguments 19 lines
  • match_score reads unknown 3h ago

    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 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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "recipient",
        "donor"
      ],
      "properties": {
        "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": {
          "enum": [
            "6/6",
            "8/8",
            "10/10",
            "12/12",
            "antigen"
          ],
          "type": "string",
          "default": "8/8"
        },
        "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"
            }
          }
        }
      },
      "additionalProperties": false
    }
    arguments 41 lines
  • allele_info reads unknown 22h ago

    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, plus resolution: what a name with fewer than four fields does and does not distinguish), 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 (A*0101, Cw*0702, Cw*07:02), the XX code (A*02:XX), two-field A*02: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 (A*02:AB) returns mac_code, recognised but not expanded. A name that has never existed in any release is refused, not guessed at: the tool returns an error result (HTTP 404 on /v1/allele) and never a near match. A deleted name is answered as deleted, with its successor when the release records one.

    mcp-tool

    {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 64,
          "description": "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."
        }
      },
      "additionalProperties": false
    }
    arguments 14 lines
  • pgx_pair unknown 22h ago

    For a donor-recipient pair, which genome carries each actionable HLA-drug association. Screens both typings as pgx_lookup does and marks every CPIC level-A, allele-positive association in_recipient, in_donor, discordant (present in exactly one) and whose_hla (both / recipient_only / donor_only). Guideline lookup over published CPIC and PharmGKB associations, keyed by two-field HLA allele. Decision support only; not a medical device. After an allogeneic transplant the recipient's blood carries the donor's genome, and which genome should drive an HLA-mediated drug alert is an open question (NCT06856226); this lookup reports both and decides nothing. Allele strings only, no patient identifiers.

    mcp-tool

    {
      "type": "object",
      "required": [
        "recipient",
        "donor"
      ],
      "properties": {
        "donor": {
          "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"
                }
              }
            },
            "alleles": {
              "type": "array",
              "items": {
                "type": "string",
                "maxLength": 64
              },
              "maxItems": 96
            }
          },
          "description": "Donor typing: {\"typing\": {...}} or {\"alleles\": [...]}.",
          "additionalProperties": false
        },
        "recipient": {
          "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"
                }
              }
            },
            "alleles": {
              "type": "array",
              "items": {
                "type": "string",
                "maxLength": 64
              },
              "maxItems": 96
            }
          },
          "description": "Recipient typing: {\"typing\": {...}} or {\"alleles\": [...]}.",
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    }
    arguments 60 lines
  • verify_text reads unknown 22h ago

    Scan HLA typing report text, or model output about HLA, for allele-shaped tokens and classify each one: valid / legacy spelling such as A*0201 or Cw*0702 (valid, with modern form and flag deprecated_name) / G-P group / deleted (with successor) / hallucinated (an invented name, never passed as real) / NMDP MAC code (seen, not expanded) / KIR name (out of scope, not checked); a valid token with fewer than four fields carries resolution, what that field count does and does not distinguish. 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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "text"
      ],
      "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."
        }
      },
      "additionalProperties": false
    }
    arguments 14 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id a3339bdeef35c29d.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/a3339bdeef35c29d/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/a3339bdeef35c29d/badge.svg)](https://brick.blue/agent/a3339bdeef35c29d?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we know
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.