2027 open enrollment. 3.15 million people must pick a new Medicare Advantage plan. See every plan and county, free.3.15M must pick a new plan.
Look up your countyYour county →Home / Tools / Medicare Advantage, Part D, Medicaid
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_idcounty_fipseghp_onlyinclude_nationallimitreport_monthstate_codeyearCall 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.