Screen people and businesses against the HHS-OIG exclusion list (LEIE) by name or NPI.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Validates a 10-digit National Provider Identifier (check digit) and looks it up in the NPI field of the LEIE mirror. Returns the excluded record(s) that carry it, or a not-on-list result. Most LEIE records have no NPI, so a not-on-list result does not show that a provider is not excluded.
10-digit NPI, e.g. "1234567893".
"full" adds UPIN and the exclusion kind and minimum period.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http healthcare-exclusion-lookup https://exclusions.trystarrynightops.com/mcp
Validates a 10-digit National Provider Identifier (check digit) and looks it up in the NPI field of the LEIE mirror. Returns the excluded record(s) that carry it, or a not-on-list result. Most LEIE records have no NPI, so a not-on-list result does not show that a provider is not excluded.
| Argument | Type | Description |
|---|---|---|
| npi* | string | 10-digit NPI, e.g. "1234567893". |
| detail | string | "full" adds UPIN and the exclusion kind and minimum period. |
{
"type": "object",
"required": [
"npi"
],
"properties": {
"npi": {
"type": "string",
"pattern": "^[0-9]{10}$",
"description": "10-digit NPI, e.g. \"1234567893\"."
},
"detail": {
"enum": [
"summary",
"full"
],
"type": "string",
"default": "summary",
"description": "\"full\" adds UPIN and the exclusion kind and minimum period."
}
},
"additionalProperties": false
}Returns the version of the mirrored LEIE: OIG's last update date and the month the data runs through, the source file's timestamp, size and hash, record counts (individuals, entities, with NPI), the latest monthly supplement, and when the mirror was last built and last checked for updates.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Screens one person or business name against a mirrored copy of the HHS-OIG List of Excluded Individuals/Entities (LEIE), the list of people and businesses excluded from Medicare, Medicaid and other federal health care programs. Person names match in any word order, with or without middle names or initials, suffixes (Jr, Sr, III), credentials (MD, RN), punctuation, hyphenated surnames, common nicknames and one-letter typos; business names match without company-form words (LLC, Inc, PC) and with abbreviations and small typos. Returns ranked possible matches with score, name, general category and specialty, city, state, ZIP, NPI when present, exclusion type with its meaning, exclusion date and any waiver, or a no-match result at the threshold, plus the list's as-of date. Optional state, NPI and date-of-birth filters narrow common names.
| Argument | Type | Description |
|---|---|---|
| dob | string | Optional date of birth, YYYY-MM-DD. Used only to report whether it matches each record ("matches", or "no DOB on file"); records whose date of birth does not match are left out and counted. The date is not stored, and stored dates of birth are never returned. |
| npi | string | Optional 10-digit National Provider Identifier. Records with a different NPI are left out and counted; records without an NPI (most of the list) are kept. |
| name* | string | Person ("Jane Q. Doe", "Doe, Jane", "Jane Doe RN") or business ("Acme Home Health LLC") to screen. |
| type | string | Optional: "individual" for a person, "entity" for a business. Default: both. |
Screens up to 25 person or business names in one call against the same LEIE mirror as screen_exclusion and returns only the best possible match per name (or no match at the threshold) in compact form, with a summary count. When a state, npi or dob filter leaves out every record at or above the threshold, the result for that entry is no_match_after_filters and it shows the best record the filter left out. Each entry can be a name string or an object with name and optional state, npi and dob (YYYY-MM-DD).
| Argument | Type | Description |
|---|---|---|
| type | string | Optional: "individual" for a person, "entity" for a business. Default: both. |
| names* | array | Names to screen (1 to 25), e.g. ["Jane Doe", {"name": "John Q. Public", "state": "TX", "dob": "1970-01-31"}, "Acme Home Health LLC"]. |
| state | string | Optional state filter applied to every name that does not set its own. |
| min_score | number | Similarity threshold from 0.5 to 1.0 (default 0.85). 1.0 = same first and last name (or business name) after normalization; lower values return weaker possible matches. |
{
"type": "object",
"required": [
"names"
],
"properties": {
"type": {
"enum": [
"individual",
"entity"
],
"type": "string",
"description": "Optional: \"individual\" for a person, \"entity\" for a business. Default: both."
},
"names": {
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"maxLength": 200,
"minLength": 1
},
{
"type": "object",
"required": [
"name"
],
"properties": {
"dob": {
"type": "string",
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$"
},
"npi": {
"type": "string",
"pattern": "^[0-9]{10}$"
},
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"state": {
"type": "string",
"maxLength": 40
}
},
"additionalProperties": false
}
]
},
"maxItems": 25,
"minItems": 1,
"description": "Names to screen (1 to 25), e.g. [\"Jane Doe\", {\"name\": \"John Q. Public\", \"state\": \"TX\", \"dob\": \"1970-01-31\"}, \"Acme Home Health LLC\"]."
},
"state": {
"type": "string",
"maxLength": 40,
"description": "Optional state filter applied to every name that does not set its own."
},
"min_score": {
"type": "number",
"default": 0.85,
"maximum": 1,
"minimum": 0.5,
"description": "Similarity threshold from 0.5 to 1.0 (default 0.85). 1.0 = same first and last name (or business name) after normalization; lower values return weaker possible matches."
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 10, 2026.
| limit |
| integer |
| Maximum number of matches to return, 1 to 25 (default 5). |
| state | string | Optional U.S. state filter: two-letter code ("OH") or name ("Ohio"). Records in other states are left out and counted; records with no state are kept. The LEIE address is the one at the time of exclusion. |
| detail | string | "summary" (default) returns the key fields; "full" adds UPIN, the exclusion kind and minimum period, and the middle-name comparison. |
| min_score | number | Similarity threshold from 0.5 to 1.0 (default 0.85). 1.0 = same first and last name (or business name) after normalization; lower values return weaker possible matches. |
{
"type": "object",
"required": [
"name"
],
"properties": {
"dob": {
"type": "string",
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
"description": "Optional date of birth, YYYY-MM-DD. Used only to report whether it matches each record (\"matches\", or \"no DOB on file\"); records whose date of birth does not match are left out and counted. The date is not stored, and stored dates of birth are never returned."
},
"npi": {
"type": "string",
"pattern": "^[0-9]{10}$",
"description": "Optional 10-digit National Provider Identifier. Records with a different NPI are left out and counted; records without an NPI (most of the list) are kept."
},
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Person (\"Jane Q. Doe\", \"Doe, Jane\", \"Jane Doe RN\") or business (\"Acme Home Health LLC\") to screen."
},
"type": {
"enum": [
"individual",
"entity"
],
"type": "string",
"description": "Optional: \"individual\" for a person, \"entity\" for a business. Default: both."
},
"limit": {
"type": "integer",
"default": 5,
"maximum": 25,
"minimum": 1,
"description": "Maximum number of matches to return, 1 to 25 (default 5)."
},
"state": {
"type": "string",
"maxLength": 40,
"description": "Optional U.S. state filter: two-letter code (\"OH\") or name (\"Ohio\"). Records in other states are left out and counted; records with no state are kept. The LEIE address is the one at the time of exclusion."
},
"detail": {
"enum": [
"summary",
"full"
],
"type": "string",
"default": "summary",
"description": "\"summary\" (default) returns the key fields; \"full\" adds UPIN, the exclusion kind and minimum period, and the middle-name comparison."
},
"min_score": {
"type": "number",
"default": 0.85,
"maximum": 1,
"minimum": 0.5,
"description": "Similarity threshold from 0.5 to 1.0 (default 0.85). 1.0 = same first and last name (or business name) after normalization; lower values return weaker possible matches."
}
},
"additionalProperties": false
}