Look up US healthcare providers and organisations by 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.
Look up a single healthcare provider by their exact 10-digit National Provider Identifier (NPI). Returns the full registry record: basic info, addresses, taxonomies/specialties, identifiers and other names. NPPES Read API v2.1.
The 10-digit NPI number to look up, e.g. '1467550004' (required).
Look up a single healthcare provider by their exact 10-digit National Provider Identifier (NPI). Returns the full registry record: basic info, addresses, taxonomies/specialties, identifiers and other names. NPPES Read API v2.1.
| Argument | Type | Description |
|---|---|---|
| number* | string | The 10-digit NPI number to look up, e.g. '1467550004' (required). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"number"
],
"properties": {
"number": {
"type": "string",
"pattern": "^\\d{10}$",
"description": "The 10-digit NPI number to look up, e.g. '1467550004' (required)."
}
}
}Full-power search of the NPPES NPI Registry across ANY combination of criteria — individual name, organization name, NPI number, taxonomy/specialty, and location. Use nppes_search_individuals / nppes_search_organizations for the common cases; use this when you need mixed or advanced criteria. The API requires at least one meaningful search parameter. NPPES Read API v2.1.
| Argument | Type | Description |
|---|---|---|
| city | string | City of the provider's address. |
| skip | integer | Number of records to skip, for pagination (0–1000; combined with limit, up to 1200 records reachable). |
| limit | integer | Max number of records to return (1–200, default 10). |
| state | string | Two-letter U.S. state/territory abbreviation, e.g. 'CA', 'NY', 'PR'. |
| number | string | Exact 10-digit NPI number. |
| last_name | string | Individual provider last name (trailing '*' wildcard allowed). |
| first_name | string | Individual provider first name (trailing '*' wildcard allowed). |
| postal_code | string | Postal (ZIP) code; a trailing '*' wildcard is allowed for prefix search, e.g. '941*'. |
| country_code | string | Two-letter country code (default 'US'). Use 'US' for domestic addresses. |
| name_purpose | string | For name matching: 'PROVIDER' (default) or 'AO' (authorized official). |
| address_purpose | string | Which address the city/state/postal_code filters apply to (LOCATION = practice address). |
Search for INDIVIDUAL healthcare providers (NPI-1: doctors, nurses, therapists, etc.) by name, specialty (taxonomy) and/or location. Provide at least one meaningful criterion beyond a location. Name fields support a trailing '*' wildcard (min 2 chars before it). NPPES Read API v2.1.
| Argument | Type | Description |
|---|---|---|
| city | string | City of the provider's address. |
| skip | integer | Number of records to skip, for pagination (0–1000; combined with limit, up to 1200 records reachable). |
| limit | integer | Max number of records to return (1–200, default 10). |
| state | string | Two-letter U.S. state/territory abbreviation, e.g. 'CA', 'NY', 'PR'. |
| last_name | string | Provider last name. A trailing '*' wildcard is allowed, e.g. 'Smi*'. |
| first_name | string | Provider first name. A trailing '*' wildcard is allowed, e.g. 'Jo*'. |
| postal_code | string | Postal (ZIP) code; a trailing '*' wildcard is allowed for prefix search, e.g. '941*'. |
| country_code | string |
Search for ORGANIZATION healthcare providers (NPI-2: hospitals, clinics, group practices, pharmacies, labs, etc.) by organization name, specialty (taxonomy) and/or location. The organization_name field supports a trailing '*' wildcard (min 2 chars before it). NPPES Read API v2.1.
| Argument | Type | Description |
|---|---|---|
| city | string | City of the provider's address. |
| skip | integer | Number of records to skip, for pagination (0–1000; combined with limit, up to 1200 records reachable). |
| limit | integer | Max number of records to return (1–200, default 10). |
| state | string | Two-letter U.S. state/territory abbreviation, e.g. 'CA', 'NY', 'PR'. |
| postal_code | string | Postal (ZIP) code; a trailing '*' wildcard is allowed for prefix search, e.g. '941*'. |
| country_code | string | Two-letter country code (default 'US'). Use 'US' for domestic addresses. |
| address_purpose | string | Which address the city/state/postal_code filters apply to (LOCATION = practice address). |
| organization_name |
| enumeration_type |
| string |
| Restrict to 'NPI-1' (individuals) or 'NPI-2' (organizations). Omit to search both. |
| organization_name | string | Organization name (trailing '*' wildcard allowed). |
| taxonomy_description | string | Provider taxonomy / specialty text, e.g. 'cardiology', 'Pediatrics', 'Social Worker'. Partial matches supported; a trailing '*' wildcard is allowed (min 2 chars before it). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"city": {
"type": "string",
"description": "City of the provider's address."
},
"skip": {
"type": "integer",
"maximum": 1000,
"minimum": 0,
"description": "Number of records to skip, for pagination (0–1000; combined with limit, up to 1200 records reachable)."
},
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Max number of records to return (1–200, default 10)."
},
"state": {
"type": "string",
"description": "Two-letter U.S. state/territory abbreviation, e.g. 'CA', 'NY', 'PR'."
},
"number": {
"type": "string",
"pattern": "^\\d{10}$",
"description": "Exact 10-digit NPI number."
},
"last_name": {
"type": "string",
"description": "Individual provider last name (trailing '*' wildcard allowed)."
},
"first_name": {
"type": "string",
"description": "Individual provider first name (trailing '*' wildcard allowed)."
},
"postal_code": {
"type": "string",
"description": "Postal (ZIP) code; a trailing '*' wildcard is allowed for prefix search, e.g. '941*'."
},
"country_code": {
"type": "string",
"description": "Two-letter country code (default 'US'). Use 'US' for domestic addresses."
},
"name_purpose": {
"enum": [
"AO",
"PROVIDER"
],
"type": "string",
"description": "For name matching: 'PROVIDER' (default) or 'AO' (authorized official)."
},
"address_purpose": {
"enum": [
"LOCATION",
"MAILING",
"PRIMARY",
"SECONDARY"
],
"type": "string",
"description": "Which address the city/state/postal_code filters apply to (LOCATION = practice address)."
},
"enumeration_type": {
"enum": [
"NPI-1",
"NPI-2"
],
"type": "string",
"description": "Restrict to 'NPI-1' (individuals) or 'NPI-2' (organizations). Omit to search both."
},
"organization_name": {
"type": "string",
"description": "Organization name (trailing '*' wildcard allowed)."
},
"taxonomy_description": {
"type": "string",
"description": "Provider taxonomy / specialty text, e.g. 'cardiology', 'Pediatrics', 'Social Worker'. Partial matches supported; a trailing '*' wildcard is allowed (min 2 chars before it)."
}
}
}| Two-letter country code (default 'US'). Use 'US' for domestic addresses. |
| name_purpose | string | Which name to match: 'PROVIDER' (default) matches the provider's own name; 'AO' matches an authorized official. |
| address_purpose | string | Which address the city/state/postal_code filters apply to (LOCATION = practice address). |
| taxonomy_description | string | Provider taxonomy / specialty text, e.g. 'cardiology', 'Pediatrics', 'Social Worker'. Partial matches supported; a trailing '*' wildcard is allowed (min 2 chars before it). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"city": {
"type": "string",
"description": "City of the provider's address."
},
"skip": {
"type": "integer",
"maximum": 1000,
"minimum": 0,
"description": "Number of records to skip, for pagination (0–1000; combined with limit, up to 1200 records reachable)."
},
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Max number of records to return (1–200, default 10)."
},
"state": {
"type": "string",
"description": "Two-letter U.S. state/territory abbreviation, e.g. 'CA', 'NY', 'PR'."
},
"last_name": {
"type": "string",
"description": "Provider last name. A trailing '*' wildcard is allowed, e.g. 'Smi*'."
},
"first_name": {
"type": "string",
"description": "Provider first name. A trailing '*' wildcard is allowed, e.g. 'Jo*'."
},
"postal_code": {
"type": "string",
"description": "Postal (ZIP) code; a trailing '*' wildcard is allowed for prefix search, e.g. '941*'."
},
"country_code": {
"type": "string",
"description": "Two-letter country code (default 'US'). Use 'US' for domestic addresses."
},
"name_purpose": {
"enum": [
"AO",
"PROVIDER"
],
"type": "string",
"description": "Which name to match: 'PROVIDER' (default) matches the provider's own name; 'AO' matches an authorized official."
},
"address_purpose": {
"enum": [
"LOCATION",
"MAILING",
"PRIMARY",
"SECONDARY"
],
"type": "string",
"description": "Which address the city/state/postal_code filters apply to (LOCATION = practice address)."
},
"taxonomy_description": {
"type": "string",
"description": "Provider taxonomy / specialty text, e.g. 'cardiology', 'Pediatrics', 'Social Worker'. Partial matches supported; a trailing '*' wildcard is allowed (min 2 chars before it)."
}
}
}| string |
| Organization (legal business) name. A trailing '*' wildcard is allowed, e.g. 'Kaiser*'. |
| taxonomy_description | string | Provider taxonomy / specialty text, e.g. 'cardiology', 'Pediatrics', 'Social Worker'. Partial matches supported; a trailing '*' wildcard is allowed (min 2 chars before it). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"city": {
"type": "string",
"description": "City of the provider's address."
},
"skip": {
"type": "integer",
"maximum": 1000,
"minimum": 0,
"description": "Number of records to skip, for pagination (0–1000; combined with limit, up to 1200 records reachable)."
},
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Max number of records to return (1–200, default 10)."
},
"state": {
"type": "string",
"description": "Two-letter U.S. state/territory abbreviation, e.g. 'CA', 'NY', 'PR'."
},
"postal_code": {
"type": "string",
"description": "Postal (ZIP) code; a trailing '*' wildcard is allowed for prefix search, e.g. '941*'."
},
"country_code": {
"type": "string",
"description": "Two-letter country code (default 'US'). Use 'US' for domestic addresses."
},
"address_purpose": {
"enum": [
"LOCATION",
"MAILING",
"PRIMARY",
"SECONDARY"
],
"type": "string",
"description": "Which address the city/state/postal_code filters apply to (LOCATION = practice address)."
},
"organization_name": {
"type": "string",
"description": "Organization (legal business) name. A trailing '*' wildcard is allowed, e.g. 'Kaiser*'."
},
"taxonomy_description": {
"type": "string",
"description": "Provider taxonomy / specialty text, e.g. 'cardiology', 'Pediatrics', 'Social Worker'. Partial matches supported; a trailing '*' wildcard is allowed (min 2 chars before it)."
}
}
}