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

Your county →

Home / Tools / Medicare Advantage, Part D, Medicaid

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

get_plan_value

Get Plan Value

What it answers

Vlada Plan Value: MODELED value to the member of a Medicare Advantage plan, per member per month, for 2026 and 2027 (never a filed benefit, a bid or a paid claim). The headline is medical cost-sharing value at the expected position in each filed range + extras (the flex card valued by what the money buys) + Part D + the Part B buydown - the member premium, one figure per leg. D-SNP has two columns: the headline is the full-dual column (extras + Part D against the Extra Help comparator, medical $0) and the filed design rides beside it.

THREE MODES, chosen by the arguments. PLAN: contract_id (e.g. 'H0609') + plan_id (e.g. '025') [+ segment_id] -> each plan segment's value 2026 and 2027, the five legs, the range ends, the card bounds, the value without Part D, the filed design, and for a D-SNP the full-dual column, Part D against Extra Help and Medicaid's cost-sharing protection (published beside, never in a total), plus part_d_2027_basis. A contract alone lists its plan segments (largest first). MARKET: product_type (required; 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) + geography (national | state | county; inferred from the place) + state / county (name as CMS spells it, with state) / county_ssa, optional parent (partial name matches) and plan_type (default 'ALL'), group_by (parent by default | none | state | county | plan_type | product_type) -> value.summary is the market: its levels (2026 = every September 2026 member, 2027 = those members followed to their 2027 plan) and its same-member change (members valued in both years: 2026, 2027, change), every leg; value.rows are the parents (or groups), largest first. RANK: rank=true with product_type and a geography -> who cut and who added most, on two bases side by side: 'same members' (member-weighted, the members followed) and 'plans on the shelf' (the simple average of the plans offered), each with its rank.

limit bounds the rows (default 25, max 500).

READ IT RIGHT: compare only inside one product type; a null is not valued, never $0; levels are not changes (the change is the same-member block); the 2027 Part D leg is final, priced on CMS's CY2027 formulary (a plan whose Part D could not be priced is labelled refused, never $0), and the value without Part D is the like-for-like reading of the other legs; the plan's ER cost is an upper bound (the ER copay charged on every visit, waiver on admission not applied; CMS convention); the card is the largest open sensitivity (quote the card bounds); 2027 is priced on the 2026 cohort, statute and dollars, a design comparison and not a forecast.

SOURCE: Vlada Plan Value (build v19e = Method Lock 1.0 + PV-55, signed 2026-10-17) from the CMS Plan Benefit Package filings, CMS county enrollment, the CMS plan crosswalk and the CMS Part D formulary files.

Inputs

contract_id
string · optional
county
string · optional
county_ssa
string · optional
geography
string · optional
group_by
string · optional
limit
integer · optional
parent
string · optional
plan_id
string · optional
plan_type
string · optional
default: "ALL"
product_type
string · optional
rank
boolean · optional
default: false
segment_id
string · optional
state
string · 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_plan_value 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_plan_value \
  -H "Authorization: Bearer $VLADA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
curl https://api.vladahealth.com/v1/tools/get_plan_value/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_plan_value_plans
  • medicare_semantic.vw_plan_value_cells
  • medicare_semantic.vw_plan_value_pairs

views: medicare_semantic.vw_plan_value_plans · medicare_semantic.vw_plan_value_cells · medicare_semantic.vw_plan_value_pairs

Known limits

  • Every value is modeled value to the member, never a filed benefit, bid or paid claim.
  • The 2027 Part D leg is final: priced on CMS's CY2027 formulary (the October 2026 release); refused plans are labelled.
  • Medical: the plan's ER cost is an upper bound (the ER copay charged on every visit, waiver on admission not applied; CMS convention).
  • D-SNP headline is the full-dual column; the filed design rides beside it; Medicaid protection is never in a total.
  • Levels and the same-member change are different populations; the change is read from the pairs.
  • rank=true needs medicare_semantic.plan_value_shelf_v19e; until it is published the rank mode refuses with recover_with rank=false.

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.