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_benefit_change
Get Benefit Change
What it answers
The locked 2027 Medicare Advantage benefit tables in one call: what each benefit was in 2026 and what it is in 2027 for the SAME members, member-weighted from the CMS Plan Benefit Package filings and CMS September 2026 county enrollment, inside ONE product type, for the market or a parent organization, nationally, in a state or in a county. Premium, MOOP, the medical and Part D deductibles, the medical copays and coinsurance, the Part D tier cost shares, dental / OTC / hearing / eyewear / flex card dollars and offered shares, the Part B giveback and the supplemental services.
ARGUMENTS: product_type (required unless group_by='product_type': non-SNP HMO | non-SNP PPO | D-SNP HMO | D-SNP PPO | C-SNP HMO | C-SNP PPO | I-SNP HMO | I-SNP PPO; 'ALL' is refused, types are never pooled), geography (national | state | county; inferred from the place when omitted), state (two letters), county (the name as CMS spells it, e.g. 'Maricopa', with state) or county_ssa (five digits, e.g. '03060'), parent (the parent organization; a partial name matches, e.g. 'UnitedHealth'), plan_type (default 'ALL'; HMO | HMOPOS | Local PPO | Regional PPO), group_by (none | parent | state | county | plan_type | product_type; state needs geography national, county needs geography state), benefits ('key' default | 'all' | a comma-separated list of benefit names, listed in value.benefits), limit (rows, default 50, max 500, largest 2026 membership first).
RETURNS value.summary (the market of the scope: every benefit for the scope's members) and value.rows (one per group, or per matching parent). Each row: members_2026 (every September 2026 member), members_continuing (the members on both sides of the change), plans, thin (true when the value rests on plans covering under 70% of the members or fewer than five plans) and, per benefit, {2026, 2027_same_members, change, coverage_2026, coverage_2027, 2026_all_members, unit}: 2026 is the continuing members' 2026 design, 2027_same_members those same members' 2027 design, change = 2027_same_members minus 2026; 2026_all_members is every 2026 member, context only, never one side of a change. coverage is the share of the row's members the value describes. A null value is unknown (no member filed it), never $0. Percent benefits are served 0-100. When an allowance is asked, like_for_like carries its dollars on the paired members (same form both years) with the share whose design changed form, which is a design change, never a raise or a cut.
D-SNP figures are the FILED design: a full dual generally pays $0 under Medicaid; the full-dual reading is the Plan Value tool's full-dual column. Employer group plans and stand-alone Part D are not in the tables.
SOURCE: Vlada locked benefit tables (Edition 1.1) from the CMS Plan Benefit Package filings, CMS county enrollment, the plan service area file and the CMS plan crosswalk.
Inputs
benefitscontract_idcountycounty_ssageographygroup_byinclude_overalllimitmatrixmodeparentparent_bplan_typeproduct_typestateweightyearsCall 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_benefit_change 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_benefit_change \
-H "Authorization: Bearer $VLADA_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'curl https://api.vladahealth.com/v1/tools/get_benefit_change/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_semantic.vw_benefit_reading_cells
- medicare_semantic.vw_benefit_reading_cells_sd
- medicare_semantic.vw_benefit_reading_simple
- medicare_semantic.vw_benefit_reading_transitions
- medicare_semantic.vw_benefit_contract_match
- medicare_semantic.vw_benefit_reading_matched
- medicare_semantic.vw_benefit_reading_atoms
views: medicare_semantic.vw_benefit_reading_cells · medicare_semantic.vw_benefit_reading_cells_sd · medicare_semantic.vw_benefit_reading_simple · medicare_semantic.vw_benefit_reading_transitions · medicare_semantic.vw_benefit_contract_match · medicare_semantic.vw_benefit_reading_matched · medicare_semantic.vw_benefit_reading_atoms
Known limits
- Same-member change is 2026 continuing members against those members in 2027; members in plans that exit with no successor are in neither year, plans new in 2027 have no 2026 members.
- Product types are never pooled: product_type ALL is refused.
- D-SNP cost shares are the filed design; the dual-effective reading is Plan Value's full-dual column.
- A null or zero weight is unknown, never $0; coverage rides beside every value.
- Employer group plans and stand-alone Part D are not in the tables.
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.