nppes-npi-registry
Server Details
Look up US healthcare providers and organisations by NPI.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- m190/usefulapi-mcp
- GitHub Stars
- 0
TDQS
Scored across 4 tools
Each tool has a distinct primary purpose: exact NPI lookup, general mixed-criteria search, individual search, and organization search. The general nppes_search overlaps with the two specialized search tools, but the descriptions explicitly guide when to use each, leaving little confusion.
All names use snake_case with a consistent 'nppes_' prefix and verb-based patterns (lookup_npi, search_individuals, search_organizations). The general 'nppes_search' lacks a resource noun, a minor deviation from the otherwise clear verb_noun convention.
Four tools are well-scoped for a read-only registry API, covering exact lookup and flexible search without redundancy or missing essentials. The count is neither thin nor excessive.
The tools provide complete read coverage for the NPPES domain: exact lookup by NPI, plus search across individuals, organizations, and arbitrary criteria. No obvious gaps exist for the stated read-only purpose.
Available Tools
4 toolsnppes_lookup_npiLook up a provider by NPI numberARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| number | Yes | The 10-digit NPI number to look up, e.g. '1467550004' (required). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already covers the safety profile, but the description adds real context beyond annotations: the lookup is exact-match and single-record, and it enumerates the returned sections (basic info, addresses, taxonomies, identifiers, other names). It does not mention error behavior for a non-existent NPI.
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, purpose front-loaded, then return contents, then source API. No filler and nothing repeated from the title.
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 one-parameter read-only lookup with no output schema, the description adequately sets expectations about what comes back. Only minor gaps remain (behavior on a missing or invalid NPI), which are not blocking for correct invocation.
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% and the single parameter already documents the 10-digit format and an example. The description only echoes 'exact 10-digit', adding no syntax or edge-case meaning beyond the schema, so the baseline 3 applies.
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 ('look up'), resource ('healthcare provider'), and the exact discriminator ('exact 10-digit NPI'), plus what the record contains. The contrast with the sibling search tools is implicit via 'single' and 'exact' rather than explicit, so it stops short of naming an alternative.
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?
Usage is implied: this is the tool for when you already hold a known NPI, versus the nppes_search* siblings for finding one. It never states that condition or names the alternatives, so the agent must infer the routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nppes_searchSearch the NPI registry (all criteria)ARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City of the provider's address. | |
| skip | No | Number of records to skip, for pagination (0–1000; combined with limit, up to 1200 records reachable). | |
| limit | No | Max number of records to return (1–200, default 10). | |
| state | No | Two-letter U.S. state/territory abbreviation, e.g. 'CA', 'NY', 'PR'. | |
| number | No | Exact 10-digit NPI number. | |
| last_name | No | Individual provider last name (trailing '*' wildcard allowed). | |
| first_name | No | Individual provider first name (trailing '*' wildcard allowed). | |
| postal_code | No | Postal (ZIP) code; a trailing '*' wildcard is allowed for prefix search, e.g. '941*'. | |
| country_code | No | Two-letter country code (default 'US'). Use 'US' for domestic addresses. | |
| name_purpose | No | For name matching: 'PROVIDER' (default) or 'AO' (authorized official). | |
| address_purpose | No | Which address the city/state/postal_code filters apply to (LOCATION = practice address). | |
| enumeration_type | No | Restrict to 'NPI-1' (individuals) or 'NPI-2' (organizations). Omit to search both. | |
| organization_name | No | Organization name (trailing '*' wildcard allowed). | |
| taxonomy_description | No | Provider taxonomy / specialty text, e.g. 'cardiology', 'Pediatrics', 'Social Worker'. Partial matches supported; a trailing '*' wildcard is allowed (min 2 chars before it). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds a non-obvious behavioral constraint not present in the schema ('requires at least one meaningful search parameter'), which is genuinely useful since required=0 would otherwise suggest an unrestricted call is valid. It does not describe return shape or pagination behavior, so not a 5.
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 tight sentences with the capability statement front-loaded, then routing, then the hard constraint. Very efficient, though the trailing 'NPPES Read API v2.1' is version trivia that contributes little to invocation.
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 read-only, 14-parameter search with full schema coverage, the description covers capability, routing, and the minimum-parameter constraint. The one gap is that no output schema exists and the description never says what a result looks like (provider record shape, count behavior), which an agent composing downstream steps would benefit from.
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 enums and patterns on the tricky fields, so the schema carries parameter meaning almost entirely. The description only summarizes criteria categories (name, NPI, taxonomy, location) at a level the schema already conveys, adding no syntax or format detail. Baseline 3 applies.
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?
Specific verb ('search') + resource (NPPES NPI Registry) + explicit scope ('ANY combination of criteria' with the criteria domains enumerated). It directly names the two sibling tools it is not and the condition that selects it, so an agent can distinguish it without opening a schema.
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?
Explicit routing: 'Use nppes_search_individuals / nppes_search_organizations for the common cases; use this when you need mixed or advanced criteria.' This is a textbook when-to-use/when-not statement naming the alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nppes_search_individualsSearch individual providersARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City of the provider's address. | |
| skip | No | Number of records to skip, for pagination (0–1000; combined with limit, up to 1200 records reachable). | |
| limit | No | Max number of records to return (1–200, default 10). | |
| state | No | Two-letter U.S. state/territory abbreviation, e.g. 'CA', 'NY', 'PR'. | |
| last_name | No | Provider last name. A trailing '*' wildcard is allowed, e.g. 'Smi*'. | |
| first_name | No | Provider first name. A trailing '*' wildcard is allowed, e.g. 'Jo*'. | |
| postal_code | No | Postal (ZIP) code; a trailing '*' wildcard is allowed for prefix search, e.g. '941*'. | |
| country_code | No | Two-letter country code (default 'US'). Use 'US' for domestic addresses. | |
| name_purpose | No | Which name to match: 'PROVIDER' (default) matches the provider's own name; 'AO' matches an authorized official. | |
| address_purpose | No | Which address the city/state/postal_code filters apply to (LOCATION = practice address). | |
| taxonomy_description | No | Provider taxonomy / specialty text, e.g. 'cardiology', 'Pediatrics', 'Social Worker'. Partial matches supported; a trailing '*' wildcard is allowed (min 2 chars before it). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes the safe-read profile. The description adds useful behavioral detail not in the annotations (trailing '*' wildcard matching and the 2-char minimum before the wildcard, plus the API/version 'NPPES Read API v2.1'), but it omits rate limits, result caps, or pagination behavior beyond what the schema covers.
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?
Four short, front-loaded sentences with no filler; the core scope (individual providers) leads and the important eligibility constraint follows. Slightly dense but every clause carries information.
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 an 11-parameter, fully optional, no-output-schema search tool, the description supplies the essential routing and constraint guidance. Return format is not described, but the absence of an output schema makes that a minor omission rather than a blocking gap.
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 is 3, but the description adds real value: the 2-char minimum before a wildcard for name fields is not stated in the per-parameter schema descriptions, and the taxonomy keyword examples reinforce the specialty filter. It does not expand on the enum-only parameters (name_purpose, address_purpose) which the schema already handles.
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+resource ('Search for INDIVIDUAL healthcare providers'), enumerates the criteria (name, specialty/taxonomy, location), and disambiguates from the sibling nppes_search_organizations via the emphasized INDIVIDUAL/NPI-1 framing. An agent can route between the two search tools without opening a schema.
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 instructs 'Provide at least one meaningful criterion beyond a location', a genuine usage constraint, and the location/name/taxonomy framing clarifies intended search contexts. It stops short of naming nppes_search as the generic alternative or stating when-not-to-use, so it is strong but not fully complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nppes_search_organizationsSearch organization providersARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City of the provider's address. | |
| skip | No | Number of records to skip, for pagination (0–1000; combined with limit, up to 1200 records reachable). | |
| limit | No | Max number of records to return (1–200, default 10). | |
| state | No | Two-letter U.S. state/territory abbreviation, e.g. 'CA', 'NY', 'PR'. | |
| postal_code | No | Postal (ZIP) code; a trailing '*' wildcard is allowed for prefix search, e.g. '941*'. | |
| country_code | No | Two-letter country code (default 'US'). Use 'US' for domestic addresses. | |
| address_purpose | No | Which address the city/state/postal_code filters apply to (LOCATION = practice address). | |
| organization_name | No | Organization (legal business) name. A trailing '*' wildcard is allowed, e.g. 'Kaiser*'. | |
| taxonomy_description | No | Provider taxonomy / specialty text, e.g. 'cardiology', 'Pediatrics', 'Social Worker'. Partial matches supported; a trailing '*' wildcard is allowed (min 2 chars before it). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read, so the description is not carrying the safety burden. It adds a useful behavioral detail (trailing '*' wildcard on organization_name, min 2 chars before it) and the API version, but says nothing about result caps, pagination behavior, or rate limits for a 9-parameter search.
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?
Two tight sentences with zero padding: the capability and its entity-type scope lead, followed by wildcard syntax and provenance. Every clause earns its place and nothing is buried.
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 9 parameters, no output schema, and only a readOnlyHint annotation, the description covers the primary search dimensions (name, specialty, location) but omits what the call actually returns (NPI record shape / fields) and gives no pagination or result-limit context. Adequate but with clear gaps for a search tool of this breadth.
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 all nine parameters are already documented by the schema; baseline is 3. The description's wildcard note is essentially a restatement of the organization_name schema text and it does not clarify the relationship between address_purpose and the location filters.
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 (Search) and resource (ORGANIZATION healthcare providers, NPI-2), and enumerates concrete examples (hospitals, clinics, group practices, pharmacies, labs). The uppercase 'ORGANIZATION' plus the NPI-2 designation cleanly distinguishes it from nppes_search_individuals and nppes_lookup_npi without opening any schema.
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 scope statement implies when to reach for this tool (entity-type 2 organizations rather than individuals), but no sibling tool is named as an alternative and there is no explicit when-not guidance. Usage is inferable rather than stated.
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.
4 tool updates
- First observed
nppes_lookup_npi - First observed
nppes_search - First observed
nppes_search_individuals - First observed
nppes_search_organizations
Related MCP Connectors
Healthcare provider & compliance intel: NPPES lookup, OIG/SAM exclusion screening, FDA enforcement.
Search a healthcare provider directory and get full provider details by id.
Search NPPES providers and resolve NUCC specialty codes via MCP over STDIO or Streamable HTTP.
Pay-per-call US healthcare data: hospital financials, prices, quality, exclusions, wages.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables querying healthcare provider information from the CMS NPI Registry using a 10-digit National Provider Identifier (NPI).1 npmMIT
- FlicenseNot gradedqualityCmaintenanceProvides tools to look up healthcare providers and organizations by NPI number and to search the CMS NPPES NPI Registry by name, location, taxonomy, and other criteria.-
- AlicenseNot gradedqualityAmaintenanceLook up US healthcare providers in the NPPES NPI registry and resolve NUCC specialty codes via MCP.244 npm1Apache 2.0
- -licenseNot gradedqualityNot gradedmaintenanceEnables interaction with the CMS NPPES NPI Registry to search, lookup, and validate National Provider Identifier records. It features offline-capable search using a local SQLite database that automatically updates with the latest provider data.-
Glama MCP Gateway
Add one secure layer between your agents and this server.