2027 open enrollment. 3.15M must pick a new plan.

Your county →

Home / Tools / Medicare Advantage, Part D, Medicaid

Medicare Advantage, Part D, MedicaidL2 · v0.2.0 · read-only

get_contract_service_area

Get Contract Service Area

What it answers

The county-level service area of Medicare Advantage contracts, month by month, from CMS's monthly MA Contract Service Area file (2006-10 on; 2022-11 was never published). Both directions: the counties a contract serves (contract_id) and the contracts serving a county (county_fips, 5 digits) or a state (state_code, 2 letters).

WINDOW: report_month (YYYY-MM) or year; with neither, the newest month held (stated in value.query.report_month).

RETURNS value.summary (distinct contracts, counties, contract-counties and contract-county-months; national, employer-group and partial-county counts; the months read), value.contracts (one row per contract: organization, organization type, plan type, counties served, employer-group and partial counties) and value.rows (one row per contract, county, month and flag combination: state_code, county_fips, county_ssa, county_name, eghp, partial_county, national_service_area). `limit` bounds both lists (default 100, max 2000); a truncated list carries a caveat.

THREE RULES: (1) eghp (employer-group only) and partial_county are CMS's own flags; eghp_only=true keeps employer-group rows. (2) A contract serving the whole country (National PACE and similar) is one national row with no state or county (national_service_area=true); it is never counted as a county, and a state or county filter leaves it out unless include_national=true. (3) CMS lists a contract-county twice when its plans there differ in the partial or employer flag, so count DISTINCT contract-counties, never rows; the summary already does.

Each month is read at its newest CMS edition. Stand-alone Part D (PDP) service areas are a separate file and are not here.

Inputs

contract_id
string · optional
county_fips
string · optional
eghp_only
boolean · optional
include_national
boolean · optional
default: false
limit
integer · optional
report_month
string · optional
state_code
string · optional
year
integer · optional

Call it

From an agent: connect the Vlada MCP once (one click for Claude, ChatGPT, Cursor, VS Code) and ask in plain English; the agent selects get_contract_service_area when the question fits. From code: the same tool over REST with an API key. The schema endpoint needs no key.

curl -X POST https://api.vladahealth.com/v1/tools/get_contract_service_area \
  -H "Authorization: Bearer $VLADA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
curl https://api.vladahealth.com/v1/tools/get_contract_service_area/schema      # the JSON schema, no auth
# MCP endpoint (Streamable HTTP): https://mcp.vladahealth.com/mcp

What comes back

Typed rows plus provenance on every answer: the public source file, its vintage, the methodology, and a response_hash you can replay. Prove and replay tools turn any number into a re-runnable receipt. A number the data cannot support comes back as “not in the data”, never as zero.

Sources behind it

  • medicare_silver.ma_contract_service_area_v2

tables: medicare_silver.ma_contract_service_area_v2

Known limits

  • eghp and partial_county are CMS's own flags (parse revision 2); the revision-1 defect that read them false on every row does not apply.
  • National service-area rows have no state or county (national_service_area true); they are excluded from county counts and from state or county filters unless include_national is set.
  • A contract-county split across flag values appears on more than one row: count DISTINCT contract-counties.
  • CMS never published the 2022-11 file.

As of the 2026-10-19 build of the served surface · machine-readable catalog · the live server may run a different version; the schema endpoint above is authoritative for what is deployed.