API access
Your AI client reaches CMS Provider Data through one ParcelOps MCP endpoint, so there is no separate key to hold for it and no per-source client to write. Reaching it takes no credentials of your own.
Where it came from
Freshness and coverage
What this source cannot tell you
- ⚠ Anything outside United States, hospitals: every state, the District of Columbia, and the territories that enroll Medicare providers. Address, city, state, ZIP, and county only, with no coordinates published., United States, nursing homes: every state and territory that certifies them, and every row carries a coordinate. This is the only directory here that supports a point and radius search., and United States, home health agencies, hospice, inpatient rehabilitation facilities, and long-term care hospitals: address only, with no coordinates published.. A request past that edge comes back empty rather than approximated.
- ⚠ A current enrollment snapshot, not a time series. Certification dates reach back to the 1960s for the oldest facilities, but each file describes only the state of enrollment as of its own release.
- ⚠ Anything CMS Provider Data Catalog: Hospital General Information, Nursing Home Provider Information, Home Health Care Agencies, Hospice, Inpatient Rehabilitation Facility, Long-Term Care Hospital does not publish. ParcelOps returns this source as it stands and never fills a blank field from a different one.
- ⚠ This catalog lists Medicare-enrolled facilities only. Urgent care centers, freestanding emergency rooms, physician offices, retail clinics, and most outpatient sites never appear in it. An empty result means no Medicare-enrolled facility of the requested type matched the filters, never that there is no healthcare in the area.
- ⚠ Assisted living, independent living, and memory care are licensed by states rather than certified by Medicare, so they are absent from this catalog entirely. For a seniors-housing comparison set this connector sees skilled nursing and the continuing care retirement community flag, and is blind to the rest of the stack.
- ⚠ Star ratings are CMS methodology snapshots computed from a fixed measure set over a fixed reporting window. They are not a guarantee about care received, are not comparable across facility types, and change when CMS revises the methodology without any change at the facility.
- ⚠ A missing rating is missing, never zero and never poor. Hospitals publish the literal string "Not Available" and home health agencies publish "-". Both are returned as null. Critical Access Hospitals, the rural lane’s answer, are largely unrated by design.
- ⚠ Each dataset refreshes on its own cycle, so vintages differ per file and are stamped per method rather than shared. A hospital rating and a nursing home rating are not observations from the same moment.
- ⚠ Almost nothing in this catalog is geocoded. Nursing homes are the only facility directory wired here that publishes coordinates, so they are the only facility type this connector reports a distance for. Hospitals, hospice, home health, inpatient rehabilitation, and long-term care hospitals are address only, and no hospital distance is available at any radius.
- ⚠ An address is the address CMS holds for that certification number. It is not a parcel boundary, and a multi-building campus or a multi-site operator under one certification number resolves to a single point.
- ⚠ A nursing home coordinate is a point from the CMS geocoding pipeline, not a surveyed location, and CMS flags a minority of them with a footnote code whose crosswalk it does not publish through this API. Those rows are returned with the raw flag attached rather than a guessed meaning, and a distance computed from a flagged row deserves a second look.
- ⚠ The CMS Certification Number is the join key across these files, and hospitals publish it as facility_id in the same identifier space. It identifies a Medicare enrollment, not a legal entity, a building, or an owner.
- ⚠ Every column upstream is typed text, so range operators compare strings and a negative value sorts backwards. This connector never sends a longitude filter and never sends a negative number, and resolves longitude and distance locally instead.
- ⚠ Nothing here is patient level, physician level, or claims level. Every row is a facility, drawn from the same files that feed the public Care Compare site.
Methods (5)
A method is one call your agent can make against this source.
findHospitals
readFind Medicare-enrolled hospitals by city, ZIP, county, or state, with type, ownership, and rating.
Records returnedhospitalHow to get more resultsoffset (offsetField: offset, limitField: limit)FreshnessScheduled (source-level)Input schema
{ "type": "object", "properties": { "stateAlpha": { "type": "string", "pattern": "^[A-Za-z]{2}$", "description": "Two-letter state, district, or territory code such as TX." }, "city": { "type": "string", "minLength": 2, "maxLength": 80, "description": "City or town exactly as CMS publishes it, such as AUSTIN." }, "zipCode": { "type": "string", "pattern": "^\\d{5}$", "description": "Five-digit ZIP code such as 78704." }, "county": { "type": "string", "minLength": 2, "maxLength": 80, "description": "County or parish name. The trailing \"County\" or \"Parish\" is optional." }, "facilityName": { "type": "string", "minLength": 3, "maxLength": 120, "description": "Partial facility name. Matching is case-insensitive." }, "hospitalType": { "type": "string", "enum": [ "Acute Care Hospitals", "Critical Access Hospitals", "Psychiatric", "Childrens", "Rural Emergency Hospital", "Long-term", "Acute Care - Veterans Administration", "Acute Care - Department of Defense" ] }, "ownershipType": { "type": "string", "minLength": 4, "maxLength": 80, "description": "Published ownership string such as \"Proprietary\" or \"Voluntary non-profit - Private\"." }, "emergencyServices": { "type": "boolean", "description": "Whether the hospital reports emergency services." }, "minOverallRating": { "type": "integer", "minimum": 1, "maximum": 5, "description": "Keep only facilities at or above this CMS star rating. Unrated facilities are excluded, not treated as low." }, "limit": { "type": "integer", "minimum": 1, "maximum": 200 }, "offset": { "type": "integer", "minimum": 0, "maximum": 20000 } }, "required": [], "additionalProperties": false }No coordinates exist upstream, so no point and no distance.
findNursingHomes
readFind Medicare-certified nursing homes near a point or in a place, with ratings, beds, and ownership.
Records returnednursing_homeHow to get more resultsoffset (offsetField: offset, limitField: limit)FreshnessScheduled (source-level)Input schema
{ "type": "object", "properties": { "latitude": { "type": "number", "minimum": -90, "maximum": 90 }, "longitude": { "type": "number", "minimum": -180, "maximum": 180 }, "radiusMiles": { "type": "number", "minimum": 0.1, "maximum": 25, "description": "Straight-line miles from the point. Caps at 25 so the search stays complete within the upstream page limit." }, "stateAlpha": { "type": "string", "pattern": "^[A-Za-z]{2}$", "description": "Two-letter state, district, or territory code such as TX." }, "city": { "type": "string", "minLength": 2, "maxLength": 80, "description": "City or town exactly as CMS publishes it, such as AUSTIN." }, "zipCode": { "type": "string", "pattern": "^\\d{5}$", "description": "Five-digit ZIP code such as 78704." }, "county": { "type": "string", "minLength": 2, "maxLength": 80, "description": "County or parish name. The trailing \"County\" or \"Parish\" is optional." }, "facilityName": { "type": "string", "minLength": 3, "maxLength": 120, "description": "Partial facility name. Matching is case-insensitive." }, "ownershipType": { "type": "string", "minLength": 4, "maxLength": 80, "description": "Published ownership string such as \"For profit - Limited Liability company\"." }, "minOverallRating": { "type": "integer", "minimum": 1, "maximum": 5, "description": "Keep only facilities at or above this CMS star rating. Unrated facilities are excluded, not treated as low." }, "minCertifiedBeds": { "type": "integer", "minimum": 1, "maximum": 2000, "description": "Keep only facilities with at least this many certified beds." }, "continuingCareRetirementCommunity": { "type": "boolean", "description": "Whether the facility sits on a continuing care retirement community campus." }, "limit": { "type": "integer", "minimum": 1, "maximum": 200 }, "offset": { "type": "integer", "minimum": 0, "maximum": 20000 } }, "required": [], "additionalProperties": false }The one method with coordinates. latitude and longitude go together.
findSeniorCareProviders
readFind home health agencies, hospice, inpatient rehab, or long-term care hospitals in a place.
What you must providefacilityTypeRecords returnedsenior_care_providerHow to get more resultsoffset (offsetField: offset, limitField: limit)FreshnessScheduled (source-level)Input schema
{ "type": "object", "properties": { "facilityType": { "type": "string", "enum": [ "homeHealth", "hospice", "inpatientRehab", "longTermCareHospital" ] }, "stateAlpha": { "type": "string", "pattern": "^[A-Za-z]{2}$", "description": "Two-letter state, district, or territory code such as TX." }, "city": { "type": "string", "minLength": 2, "maxLength": 80, "description": "City or town exactly as CMS publishes it, such as AUSTIN." }, "zipCode": { "type": "string", "pattern": "^\\d{5}$", "description": "Five-digit ZIP code such as 78704." }, "county": { "type": "string", "minLength": 2, "maxLength": 80, "description": "County or parish name. The trailing \"County\" or \"Parish\" is optional." }, "facilityName": { "type": "string", "minLength": 3, "maxLength": 120, "description": "Partial facility name. Matching is case-insensitive." }, "ownershipType": { "type": "string", "minLength": 3, "maxLength": 80, "description": "Published ownership string such as \"For-Profit\" or \"PROPRIETARY\"." }, "limit": { "type": "integer", "minimum": 1, "maximum": 200 }, "offset": { "type": "integer", "minimum": 0, "maximum": 20000 } }, "required": [ "facilityType" ], "additionalProperties": false }Address only. Home health publishes no county column.
getProviderDetail
readLook one CMS Certification Number up across every facility directory this connector carries.
What you must provideproviderIdFreshnessScheduled (source-level)Input schema
{ "type": "object", "properties": { "providerId": { "type": "string", "pattern": "^[A-Za-z0-9]{4,10}$", "description": "CMS Certification Number such as 455822, or a hospital facility id such as 450388." }, "facilityType": { "type": "string", "enum": [ "hospital", "nursingHome", "homeHealth", "hospice", "inpatientRehab", "longTermCareHospital" ], "description": "Narrow the lookup to one directory. Omit it to search all six." } }, "required": [ "providerId" ], "additionalProperties": false }Each record carries its own dataset vintage.
getServiceInfo
readReturn dataset vintages, row counts, which files carry coordinates, and what this connector omits.
FreshnessScheduled (source-level)Input schema
{ "type": "object", "properties": {}, "required": [], "additionalProperties": false }Reads no upstream file, so it always answers.
Where this source is used
- Residential real estate
The parcel record, the housing programs that touch an address, and the conditions a buyer asks about.
- Realtors and brokerages
The facts behind a listing, the programs a buyer may qualify for, and your own files in the same place.
- What hospitals and nursing homes are near this property?
