# PayerPrice MCP Documentation

Connect an AI assistant to PayerPrice data using the Model Context Protocol (MCP).

## Server URL

`https://api.payerprice.com/api/v1/open/mcp`

The server uses Streamable HTTP. Your MCP client discovers permitted tools with tools/list and invokes them with tools/call.

## Authorization

Compatible clients use OAuth to connect to PayerPrice. Direct integrations can instead send an active API key in the Authorization: Bearer YOUR_API_KEY header. Your organization's tool access and API/MCP credits still apply.

## Client setup

### Claude Desktop

In Claude Desktop, open Customize → Connectors, select + → Add custom connector, and enter the PayerPrice server URL:

```
https://api.payerprice.com/api/v1/open/mcp
```

On Team or Enterprise plans, an organization owner must add the remote connector first. Then select Connect to sign in.

### Claude Code

To add this MCP to Claude Code, run this command in your terminal:

```
claude mcp add --transport http payerprice https://api.payerprice.com/api/v1/open/mcp
```

Run claude mcp list to verify the server, then use /mcp in Claude Code to sign in.

### Claude.ai

In Claude.ai, open Customize → Connectors, select + → Add custom connector, and enter the MCP server URL:

```
https://api.payerprice.com/api/v1/open/mcp
```

On Team or Enterprise plans, an organization owner must add the remote connector first. Then select Connect to sign in.

### Gemini Enterprise

Ask PayerPrice support for a Client ID and secret registered with https://vertexaisearch.cloud.google.com/oauth-redirect. In Google Cloud, create a Gemini Enterprise Custom MCP Server data store and enter:

```
MCP Server URL: https://api.payerprice.com/api/v1/open/mcp
Authorization URL: https://app.payerprice.com/oauth/authorize
Token URL: https://app.payerprice.com/oauth/token
Client ID: <provided by PayerPrice>
Client Secret: <provided by PayerPrice>
Scopes: payerprice:mcp:read
Enable PKCE Support: Yes (required)
```

Select Enable PKCE Support, click Verify Auth, and sign in to PayerPrice. Then continue creating the data store and enable the PayerPrice actions you want to use.

### Codex

Add PayerPrice as a Streamable HTTP MCP server from your terminal:

```
codex mcp add payerprice --url https://api.payerprice.com/api/v1/open/mcp
```

Then start OAuth authorization and sign in to PayerPrice:

```
codex mcp login payerprice
```

### Cursor

To add this MCP to Cursor, update your `~/.cursor/mcp.json`:

```
{
  "mcpServers": {
    "PayerPrice": {
      "url": "https://api.payerprice.com/api/v1/open/mcp"
    }
  }
}
```

Save the file and restart Cursor. Complete OAuth sign-in when prompted.

### VS Code

To add this MCP to VS Code, update your `.vscode/mcp.json`:

```
{
  "servers": {
    "PayerPrice": {
      "type": "http",
      "url": "https://api.payerprice.com/api/v1/open/mcp"
    }
  }
}
```

Start PayerPrice with MCP: List Servers, then complete OAuth sign-in in your browser.

## Tools

### search_market_percentile_negotiated_rates

Compute aggregate statistics (percentiles, min, max, mean) over commercial negotiated rates across all providers that match the given filters (state, specialty, payer, billing code, etc.). Use this to understand the distribution of rates in a market - e.g. 'what do BCBS and United typically pay cardiologists in Texas for CPT 99213?'. Returns aggregated numbers only. Within each groupBy group every TIN contributes one value, its highest matching rate, so include num_distinct_tins and report it as the sample size. Dimensions left out of groupBy collapse to the highest rate, so add billingClass, serviceCode, billingCodeModifier, or negotiatedType to groupBy when they could separate different rates. Returns {result: [{...groupBy fields, percentile_50: 125, num_distinct_tins: 8}], url}: one row per group, with each statistic under the aggregation name requested. Setting metrics.comparedTo returns values as a percent of national Medicare instead of dollars. Use search_market_negotiated_rates for individual rows across a market or search_provider_fee_schedule for identified providers. Rules: payers has no default, so ask the user when none is named. Find codes for a described service with search_billing_codes or a provider's topCodes. A value can be dollars, a percentage, or a per diem (negotiatedType); never compare or rank different types together. Query professional and institutional billing classes separately. Without yearMonths each payer's latest loaded month is used, and months can differ by payer. No rows means not observed in the searched scope, not 'no contract' or 'not covered'.

#### Parameters

- `filters` **(required)**: object - Which rates to include. search_market_percentile_negotiated_rates and search_market_negotiated_rates take the same filters.
- `filters.states` **(required)**: string[] - Required. Two-letter US state codes that providers must be located in (e.g. ['CA', 'MA', 'TX']).
- `filters.zipCodes`: string[] - Five-digit US ZIP codes to further restrict provider location (e.g. ['02451', '90210']).
- `filters.taxonomyCodes` **(required)**: string[] - Required. NUCC provider taxonomy codes that identify specialty (e.g. ['207Q00000X'] for Family Medicine). Prefer the general specialty code (ending in 00000X) unless the user names a subspecialty.
- `filters.entityTypes`: 'individual' | 'group'[] - 'individual' (solo practitioner) or 'group' (organization/group practice). Omit to include both.
- `filters.payers` **(required)**: string[] - Required. Insurance payer identifiers (e.g. ['BCBS', 'United', 'Aetna']). All Blue Cross Blue Shield identifiers query one combined Blues dataset reported as 'BCBS'. There is no default payer: ask the user when none is named.
- `filters.billingCodeAndTypes`: object[] - Exact billing codes and their code system (e.g. [{code: '99213', type: 'CPT'}]); search_billing_codes returns codes in this shape. Codes are strings; keep leading zeros.
- `filters.billingClasses`: 'professional' | 'institutional'[] - 'professional' (physician/practitioner billing) or 'institutional' (facility/hospital billing). Query them separately; their rates are different products.
- `filters.serviceCodes`: string[] - CMS Place of Service codes as two-character strings (e.g. '11' office, '21' inpatient, '22' outpatient hospital, '23' emergency room, '02' telehealth).
- `filters.billingCodeModifiers`: string[] - CPT/HCPCS modifiers (e.g. '26' professional component, 'TC' technical component). Global, 26, and TC rates are not interchangeable.
- `filters.negotiatedTypes`: string[] - How the rate is expressed. 'percentage' and 'per diem' values are not dollars per service; never compare them with dollar types.
- `filters.yearMonths`: object[] - Year/month periods, e.g. [{year: 2026, month: 9}]. When omitted, each payer's most recent loaded month is used, which can differ between payers.
- `filters.planNames`: string[] - Normalized insurance plan types to filter by (e.g. ['HMO', 'PPO', 'EPO']).
- `filters.networks`: string[] - Individual (un-normalized) network names, exactly as reported in the payer transparency file (e.g. ['Choice Plus', 'Navigate']).
- `metrics.aggregations` **(required)**: string[] - Statistics to compute, returned under these same names (e.g. ['percentile_25', 'percentile_50', 'percentile_75', 'num_distinct_tins']). Include 'num_distinct_tins' and report it as the sample size; num_distinct_npis and num_entries also count TINs at this grain.
- `metrics.comparedTo`: string - Optional. 'medicare_<year>' returns every rate statistic as a percent of the national non-facility Medicare Physician Fee Schedule amount for the same CPT code (145 means 145%); codes without that CPT rate return null rate statistics. Omit or use 'none' for dollar values.
- `groupBy` **(required)**: string[] - Dimensions to group results by, e.g. ['payer', 'billingCode'] returns one row per (payer, code) combination. Network output semantics are endpoint-specific: market benchmarks return one group per network, while provider rates return a deduplicated network array. Include at least 'payer' and 'billingCode' in most cases - without them, rates are pooled across payers/codes and are usually not interpretable.

### search_market_negotiated_rates

Retrieve a bounded page of individual provider negotiated-rate rows for a state, specialty, payer, and billing code. Use for provider-level market comparisons or row-level evidence; one provider can appear on several rows. Use search_market_percentile_negotiated_rates for typical rates, averages, medians, or percentiles, and never compute those from a page of rows; both tools take the same filters. limit is the page size (at most 100) and offset the number of rows to skip. aggregatedColumns collapses listed fields within rows; it is not a group-by setting. Returns {result: [{npi, tin, npiDisplayName, tinDisplayName, negotiatedRate, ...}], url}. Rules: payers has no default, so ask the user when none is named. Find codes for a described service with search_billing_codes or a provider's topCodes. A value can be dollars, a percentage, or a per diem (negotiatedType); never compare or rank different types together. Query professional and institutional billing classes separately. Without yearMonths each payer's latest loaded month is used, and months can differ by payer. No rows means not observed in the searched scope, not 'no contract' or 'not covered'.

#### Parameters

- `filters` **(required)**: object - Which rates to include. search_market_percentile_negotiated_rates and search_market_negotiated_rates take the same filters.
- `filters.states` **(required)**: string[] - Required. Two-letter US state codes that providers must be located in (e.g. ['CA', 'MA', 'TX']).
- `filters.zipCodes`: string[] - Five-digit US ZIP codes to further restrict provider location (e.g. ['02451', '90210']).
- `filters.taxonomyCodes` **(required)**: string[] - Required. NUCC provider taxonomy codes that identify specialty (e.g. ['207Q00000X'] for Family Medicine). Prefer the general specialty code (ending in 00000X) unless the user names a subspecialty.
- `filters.entityTypes`: 'individual' | 'group'[] - 'individual' (solo practitioner) or 'group' (organization/group practice). Omit to include both.
- `filters.payers` **(required)**: string[] - Required. Insurance payer identifiers (e.g. ['BCBS', 'United', 'Aetna']). All Blue Cross Blue Shield identifiers query one combined Blues dataset reported as 'BCBS'. There is no default payer: ask the user when none is named.
- `filters.billingCodeAndTypes`: object[] - Exact billing codes and their code system (e.g. [{code: '99213', type: 'CPT'}]); search_billing_codes returns codes in this shape. Codes are strings; keep leading zeros.
- `filters.billingClasses`: 'professional' | 'institutional'[] - 'professional' (physician/practitioner billing) or 'institutional' (facility/hospital billing). Query them separately; their rates are different products.
- `filters.serviceCodes`: string[] - CMS Place of Service codes as two-character strings (e.g. '11' office, '21' inpatient, '22' outpatient hospital, '23' emergency room, '02' telehealth).
- `filters.billingCodeModifiers`: string[] - CPT/HCPCS modifiers (e.g. '26' professional component, 'TC' technical component). Global, 26, and TC rates are not interchangeable.
- `filters.negotiatedTypes`: string[] - How the rate is expressed. 'percentage' and 'per diem' values are not dollars per service; never compare them with dollar types.
- `filters.yearMonths`: object[] - Year/month periods, e.g. [{year: 2026, month: 9}]. When omitted, each payer's most recent loaded month is used, which can differ between payers.
- `filters.planNames`: string[] - Normalized insurance plan types to filter by (e.g. ['HMO', 'PPO', 'EPO']).
- `filters.networks`: string[] - Individual (un-normalized) network names, exactly as reported in the payer transparency file (e.g. ['Choice Plus', 'Navigate']).
- `aggregatedColumns`: string[] - Fields to collapse into delimited output lists, not group-by dimensions. Payer is always a separate result dimension and is not valid here. Defaults to serviceCode and billingCodeModifier. Include network only when network output is needed because it resolves network_names_arr.
- `rateAggregation`: string - How to combine negotiated rates collapsed into one row. Applies only when aggregatedColumns includes 'negotiatedRate'; defaults to listUniqueValues.
- `sortInfo`: object[] - Server-side sorting applied before pagination. columnId must be one of payer, tin, npi, billingTypeCode, negotiatedType, billingClass, negotiatedRate, serviceCode, or billingCodeModifier; other values are ignored. Defaults to npi ascending.
- `limit`: number - Maximum rows to return. Defaults to 100, the most allowed.
- `offset`: number - Rows to skip. For the next page, pass the previous offset plus limit. Defaults to 0.

### search_provider_fee_schedule

Retrieve the commercial negotiated rates (fee schedule) for specific providers identified by NPI, TIN, or CCN, for the payers and billing codes you specify. Use this when you want each provider's own rates - e.g. 'what rates has Mayo Clinic negotiated with Aetna for office visits?'. Rate filters go in filters, which takes the market tools' filter fields apart from location and specialty. Billing codes are required; when the user asks for a provider's fee schedule without naming codes, use the topCodes returned by search_providers or lookup_providers. Returns {result: [{...groupBy fields, tin: 123456789, negotiatedRate: 98.76}], url}: each row names its provider as npi, tin, or ccn, and negotiatedRate is that provider's highest rate in the group. Dimensions left out of groupBy collapse to the highest rate, so add billingClass, serviceCode, billingCodeModifier, or negotiatedType to groupBy when they could separate different rates. At most 12 payer-month combinations per call. Use search_market_negotiated_rates for individual rates across a market or search_market_percentile_negotiated_rates for market statistics. Rules: payers has no default, so ask the user when none is named. Find codes for a described service with search_billing_codes or a provider's topCodes. A value can be dollars, a percentage, or a per diem (negotiatedType); never compare or rank different types together. Query professional and institutional billing classes separately. Without yearMonths each payer's latest loaded month is used, and months can differ by payer. No rows means not observed in the searched scope, not 'no contract' or 'not covered'.

#### Parameters

- `providers` **(required)**: object - Providers to return rates for. Provide at least one of npis, tins, or ccns. Use search_providers first if you only know the provider's name.
- `providers.npis`: number[] - NPIs (10-digit numbers) whose negotiated rates to retrieve.
- `providers.tins`: number[] - TINs as integers without dashes whose negotiated rates to retrieve; leading zeros drop (04-1234567 becomes 41234567).
- `providers.ccns`: string[] - CCNs (CMS Certification Numbers, 6 characters) whose negotiated rates to retrieve.
- `filters` **(required)**: object - Which rates to include for these providers, with the same fields as the market tools' filters apart from location and specialty.
- `filters.payers` **(required)**: string[] - Required. Insurance payer identifiers (e.g. ['BCBS', 'United', 'Aetna']). All Blue Cross Blue Shield identifiers query one combined Blues dataset reported as 'BCBS'. There is no default payer: ask the user when none is named.
- `filters.billingCodeAndTypes`: object[] - Exact billing codes and their code system (e.g. [{code: '99213', type: 'CPT'}]); search_billing_codes returns codes in this shape. Codes are strings; keep leading zeros.
- `filters.billingClasses`: 'professional' | 'institutional'[] - 'professional' (physician/practitioner billing) or 'institutional' (facility/hospital billing). Query them separately; their rates are different products.
- `filters.serviceCodes`: string[] - CMS Place of Service codes as two-character strings (e.g. '11' office, '21' inpatient, '22' outpatient hospital, '23' emergency room, '02' telehealth).
- `filters.billingCodeModifiers`: string[] - CPT/HCPCS modifiers (e.g. '26' professional component, 'TC' technical component). Global, 26, and TC rates are not interchangeable.
- `filters.negotiatedTypes`: string[] - How the rate is expressed. 'percentage' and 'per diem' values are not dollars per service; never compare them with dollar types.
- `filters.yearMonths`: object[] - Year/month periods, e.g. [{year: 2026, month: 9}]. When omitted, each payer's most recent loaded month is used, which can differ between payers.
- `filters.planNames`: string[] - Normalized insurance plan types to filter by (e.g. ['HMO', 'PPO', 'EPO']).
- `filters.networks`: string[] - Individual (un-normalized) network names, exactly as reported in the payer transparency file (e.g. ['Choice Plus', 'Navigate']).
- `groupBy` **(required)**: string[] - Dimensions to group provider-rate results by. Network and planName are returned as deduplicated arrays instead of splitting otherwise identical rate rows. Include at least 'payer' and 'billingCode' in most cases - without them, rates are pooled across payers/codes and are usually not interpretable.

### search_providers

Look up healthcare providers by name (e.g. 'Mayo Clinic'), specialty (via taxonomyCodes), or state, and return their identifying details: NPI/TIN/CCN, name, credentials, practice or organization address, states, specialties (taxonomy code and name), entity type, the number of NPIs under a TIN, in-network payers, and topCodes, the codes the provider bills most. CCN matches include city and state. Commonly used as the first step before search_provider_fee_schedule - find the provider(s) here, then pass the returned NPI/TIN/CCN values to fetch their negotiated rates, using topCodes as billingCodeAndTypes when the user names no codes. Returns NPI and TIN matches unless types includes 'ccn'. Results are candidates; confirm name, address, and specialty before using them, and ask the user when same-named providers remain. Use lookup_providers when you already have identifiers, and search_facilities for hospitals and other facilities by name, location, or type.

#### Parameters

- `providerName`: string - Name of an individual provider, group, hospital, or clinic (e.g. 'Dr. John Smith' or 'Mayo Clinic'). Do not put specialties (e.g. 'Cardiology', 'Pediatrics') here - use taxonomyCodes for that.
- `types`: 'npi' | 'tin' | 'ccn'[] - Which identifier types to return results for:
            * 'npi' - National Provider Identifier, covers both individuals and organizations.
            * 'tin' - Tax Identification Number, used for organizations/group practices.
            * 'ccn' - CMS Certification Number, used for Medicare-certified hospitals and facilities. Searched only when listed; uses providerName and the first state.
            Omit to return NPI and TIN matches.
- `states`: string[] - Two-letter US state codes to filter providers by (e.g. ['CA', 'MA']). Omit to search across all states.
- `taxonomyCodes`: string[] - Provider taxonomy codes (NUCC) that identify a specialty, e.g. '208000000X' for Pediatrics. Required when searching by specialty rather than by a specific provider name or identifier.
- `limit`: number - Maximum number of providers to return per identifier type. Defaults to the top 10 most relevant matches per type; capped at 30.

### lookup_providers

Look up providers you already have identifiers for: up to 10 each of NPIs, TINs, and CCNs in one call. NPIs and TINs return the same records as search_providers: name, credentials, address, entity or TIN type, states, specialties, the TINs an NPI bills under, the number of NPIs under a TIN, in-network payers, and topCodes, the codes the provider bills most. CCNs return facility name, address, CMS provider type, ownership, beds, health system, organization NPI, and in-network payers. Returns {npis, tins, ccns, notFound}; notFound lists identifiers that are invalid, have no record, or are outside your organization's data access. Use it to verify identifiers from the user or another tool, or to expand an NPI into its TINs, before search_provider_fee_schedule. To find providers by name, use search_providers or search_facilities.

#### Parameters

- `npis`: number[] - NPIs to look up, as 10-digit integers (at most 10).
- `tins`: number[] - TINs to look up, as integers without dashes; leading zeros drop, so 04-1234567 is 41234567 (at most 10).
- `ccns`: string[] - CCNs (CMS Certification Numbers) to look up, as 6-character strings such as '050454'. A 5-digit CCN missing its leading zero is also accepted (at most 10).

### search_facilities

Search hospitals, critical access hospitals, nursing homes, dialysis facilities, ambulatory surgery centers, health centers, hospices, and home health agencies identified by CMS Certification Number (CCN). Match by name words (names, aliases, health system, city), an exact CCN, or states, and narrow by facilityTypes or, for hospitals, hospitalTypes such as 'Critical Access Hospitals'. Provide at least one of name, ccn, or states. Returns {facilities: [{ccn, name, address, facilityType, providerType, ownership, bedCount, affiliatedHealthSystem, npi}]}, best name matches first. Several rows can share one CCN when a hospital has more than one site. Results are candidates; confirm name and location, then pass the CCN to search_provider_fee_schedule for the facility's negotiated rates.

#### Parameters

- `name`: string - Words from the facility's name, an alias, its health system, or its city (e.g. 'Mayo Rochester'). Words must appear in this order. Digits also match CCNs.
- `ccn`: string - An exact CCN, such as '050454'; a 5-digit form missing the leading zero also matches.
- `states`: string[] - Two-letter state codes (e.g. ['MN', 'WI']). Omit to search every state.
- `facilityTypes`: string[] - Facility categories: HOSPITAL, NURSING_HOME, HOME_HEALTH, HOSPICE, DIALYSIS, ASC (ambulatory surgery center), HEALTH_CENTER (FQHC or other HRSA health center), CLINIC, LONG_TERM_CARE, OTHER_CARE, UNCLASSIFIED. Omit to include all.
- `hospitalTypes`: string[] - CMS hospital categories derived from the CCN: 'Short-term (General and Specialty) Hospitals', 'Critical Access Hospitals', 'Children's Hospitals (Excluded from PPS)', 'Psychiatric Hospitals (Excluded from PPS)', 'Rehabilitation Hospitals (Excluded from PPS)', 'Long-Term Hospitals (Excluded from PPS)'. Setting this returns only hospitals that have one of these categories.
- `limit`: number - Maximum facilities to return, best name matches first. Defaults to 10; at most 50.

### search_billing_codes

Find the billing codes for a service described in words, or check a code you already have, before a rate search. Returns {codes: [{code, type, description, group}]}, most common code systems first; pass code and type to the rate tools' billingCodeAndTypes as strings, keeping leading zeros. A term matches codes whose description or category contains every word in it, or whose code starts with it, so send several short clinical terms (e.g. ['vaginal delivery', 'cesarean'] for a birth) and narrow with codeTypes ('MS-DRG' for inpatient stays, 'CPT' and 'HCPCS' for professional services, 'RC' for facility revenue codes). One service can map to several codes and code systems, and payers may publish it under any of them. A listed code is a catalog entry, not evidence that a payer publishes a rate for it.

#### Parameters

- `searchTerms` **(required)**: string[] - Words from a service description, or codes to check (e.g. ['vaginal delivery', 'cesarean'] or ['99213']). A term matches codes whose description or category contains every word in it, or whose code starts with it, so send several short clinical terms rather than one sentence.
- `codeTypes`: string[] - Code systems to search: 'MS-DRG' or 'APR-DRG' for inpatient stays, 'CPT' and 'HCPCS' for procedures, visits, drugs, and supplies, 'RC' for facility revenue codes, 'NDC' for drug packages, 'LOCAL' and 'CSTM-ALL' for payer-specific codes. Omit to search all.
- `limit`: number - Maximum codes to return, most common code systems first. Defaults to 20; at most 50.

### search_medicare_rates

Look up Medicare's published fee schedules and reference rates. Pick one medicareType: 'Physician FFS' (fee-for-service physician rates by HCPCS code and locality), 'Drug ASP' (quarterly Average Sale Price for Part B drug codes), 'Clinical Lab' (national Clinical Laboratory Fee Schedule rates by HCPCS code), 'MS-DRG weight' (inpatient DRG relative weights), 'Anesthesia' (national anesthesia conversion factors by year/month), 'DMEPOS' (durable medical equipment rates by HCPCS and state - one row per rate_type: non-rural, rural, former competitive bidding area or competitive bidding single payment amount), 'Ambulance' (ambulance rates by HCPCS and carrier/locality - rate_type urban, rural, super-rural or rural miles 1-17), 'OTP' (opioid treatment program bundles by carrier/locality), 'Part D negotiated price' (maximum fair price per unit by 11-digit NDC, effective from year/month), or 'MS-DRG national rate' (weight times the national base rates - a benchmark, not a hospital's payment). Useful as a government-rate baseline when comparing against commercial negotiated rates returned by the other tools. State the schedule, year, locality, and unit with every figure; omitting years returns every year, most recent first. Returns {data, total, pagination, url}; page with limit and offset, and cite the url.

#### Parameters

- `medicareType` **(required)**: string - Required. Which Medicare dataset to query: 'Physician FFS' (Physician Fee Schedule rates by HCPCS code and locality), 'Drug ASP' (Average Sale Price for Part B drug codes), 'Clinical Lab' (national Clinical Laboratory Fee Schedule rates by HCPCS code; mid-year additions carry their effective month), 'MS-DRG weight' (inpatient DRG relative weights), 'Anesthesia' (national anesthesia conversion factors), 'DMEPOS' (durable medical equipment, PEN and competitive bidding rates by HCPCS, state and rural/non-rural/former CBA area, quarterly), 'Ambulance' (ambulance base and mileage rates by HCPCS and carrier/locality, urban/rural/super-rural), 'OTP' (opioid treatment program bundles by carrier/locality), 'Part D negotiated price' (Medicare Drug Price Negotiation maximum fair price per unit, by 11-digit NDC), or 'MS-DRG national rate' (MS-DRG weight times the national operating and capital base rates, before wage index and hospital adjustments).
- `codes`: string[] - Billing codes to look up - HCPCS/CPT for Physician FFS and Clinical Lab, HCPCS for Drug ASP, DMEPOS, Ambulance and OTP, MS-DRG numbers for MS-DRG weight and MS-DRG national rate, 11-digit NDCs without dashes for Part D negotiated price. Not applicable to Anesthesia (omit for that type).
- `years`: number[] - Four-digit years to filter by (e.g. [2024, 2025]). Omit to return every year, most recent first; set it when the period matters. History reaches back to 2001 for Clinical Lab, 2002 for Physician FFS, 2005 for Drug ASP and FY2008 for MS-DRG weights.
- `states`: string[] - Two-letter state codes (e.g. 'CA', 'TX'), or 'national' for the Physician FFS national locality. Applies to 'Physician FFS', 'DMEPOS' and 'Anesthesia' (which has no national factor, so 'national' or omitting it returns every locality); ignored for other medicareType values.
- `month`: number - Month as 1-12. Applies to 'Drug ASP' (quarterly, indexed by month), 'DMEPOS', 'Ambulance', 'OTP', 'Part D negotiated price' and 'MS-DRG national rate'; ignored for other medicareType values.
- `limit`: number - Maximum number of rows to return (1-100). Defaults to 50.
- `offset`: number - Rows to skip. For the next page, pass the previous offset plus limit. Defaults to 0.

Human-readable documentation: https://app.payerprice.com/mcp/doc
