# get_exchange_plan_profile

Get Exchange Plan Profile · v1.0.0 · commercial

One ACA Marketplace (healthcare.gov / HIX) plan's profile for a plan year, every field tagged with the CCIIO PUF it came from. Give plan_id (the 14-character HIOS standard component id, e.g. 38344AK1060001) for the plan: issuer, metal level, plan type (HMO/PPO/EPO/POS), Individual vs SHOP, on/off exchange, network, county footprint, premium benchmarks at age 21/40/60 (min across the plan's rating areas, plus the age-40 max), the per-age premium curve from the Rate PUF (include_rate_curve, default true), headline cost shares (PCP / specialist / ER / urgent care / generic drug copay, inpatient coinsurance), CMS quality stars, and the issuer's individual-market MLR. Or give state (+ optional plan_year, metal_level, issuer_id, plan_type, on_off_exchange) for the bounded list of that state's plans, cheapest age-40 premium first. plan_year defaults to the latest year held (PY2014-2026). Deductible / MOOP are returned as not_available (not in the composed profile). FFM states only: a state-based marketplace (CA, NY, PA, GA, ...) is absent at source and the tool says so rather than returning nothing silently.

**Inputs.**
- `plan_id`: 
- `plan_year`: 
- `state`: 
- `metal_level`: 
- `issuer_id`: 
- `plan_type`: 
- `on_off_exchange`: 
- `include_rate_curve`: 
- `limit`: 

**Known limits.**
- FFM (healthcare.gov) states only; state-based marketplaces are absent at source.
- Deductible / MOOP are not in the composed profile (untyped raw JSON in the Plan Attributes PUF today) and are returned as not_available.
- premium_age21/40/60 are the MIN across the plan's rating areas (age-40 MAX also given); county-grain premium needs the rating area (use rate_curve / the Rate PUF).
- Cost shares are the base variant (-01) as filed; CSR variants differ. Quality only for CMS-rated plans in PY2023/2024/2026; MLR only PY2019-2024; PY2015 premiums thin at source; medical plans only (v1).

**A real answer** (customer seat, 2.48 s, args `{"state":"TX","limit":3}`):

```json
{
 "value": {
  "found": true,
  "not_found_reason": null,
  "mode": "list",
  "query": {
   "plan_id": null,
   "plan_year": null,
   "state": "TX",
   "metal_level": null,
   "issuer_id": null,
   "plan_type": null,
   "on_off_exchange": null,
   "include_rate_curve": true,
   "limit": 3
  },
  "plan_year": 2026,
  "plans": [
   {
    "plan_id": "66252TX0380100",
    "business_year": 2026,
    "issuer_id": "66252",
    "issuer_company_name": null,
    "plan_marketing_name": "CHRISTUS Catastrophic (3 Free PCP visits)",
    "metal_level": "Catastrophic",
    "plan_type": "HMO",
    "market_coverage": "Individual",
    "on_off_exchange": "Both",
    "network_name": "CHRISTUS Health Plan Texas",
    "covers_entire_state": false,
    "n_counties": 38,
    "premium_age21": 250.7,
    "premium_age40": 320.39,
    "premium_age60": 680.39,
    "premium_age40_max": 372.09,
    "quality_overall": 3,
    "issuer_ind_mlr_ratio": null
   },
   {
    "plan_id": "40788TX0460006",
    "business_year": 2026,
    "issuer_id": "40788",
    "issuer_company_name": null,
    "plan_type": "HMO",
    "market_coverage": "Individual",
    "on_off_exchange": "Both",
    "network_name": "BSW Premier HMO",
    "covers_entire_state": false,
    "n_counties": 104,
    "premium_age21": 275.54,
    "premium_age40": 352.15,
    "premium_age60": 747.83,
    "premium_age40_max": 652.41,
    "quality_overall": 2,
    "issuer_ind_mlr_ratio": null
   },
   {
    "plan_id": "33602TX0461116",
    "business_year": 2026,
    "issuer_id": "33602",
    "issuer_company_name": null,
    "plan_type": "HMO",
    "market_coverage": "Individual",
    "on_off_exchange": "Both",
    "network_name": "MyBlue Health",
    "covers_entire_state": false,
    "n_counties": 1,
    "premium_age21": 277.61,
    "premium_age40": 354.79,
    "premium_age60": 753.43,
    "premium_age40_max": 354.79,
    "quality_overall": 3,
    "issuer_ind_mlr_ratio": null
   }
  ],
  "row_counts": {
   "plans": {
    "matched": 4,
    "matched_is_lower_bound": true,
    "returned": 3,
    "truncated": true,
    "limit": 3
   }
  },
  "units": {
   "premium_age21": "USD/month",
   "premium_age40": "USD/month",
   "premium_age60": "USD/month",
   "premium_age40_max": "USD/month",
   "issuer_ind_premium_earned": "USD",
   "issuer_ind_mlr_ratio": "ratio",
   "quality_overall": "stars_1_to_5",
   "quality_medical": "stars_1_to_5",
   "quality_member_exp": "stars_1_to_5",
   "n_counties": "count",
   "n_rating_areas": "count",
   "n_benefits_covered": "count",
   "n_ehb_benefits": "count",
   "pcp_copay": "as_filed_text",
   "specialist_copay": "as_filed_text",
   "er_copay": "as_filed_text",
   "urgent_care_copay": "as_filed_text",
   "generic_drug_copay": "as_filed_text",
   "inpatient_coins": "as_filed_text"
  },
  "query_ids": [
   "55481ce3-2f75-4889-bb90-e507eaefc980"
  ]
 },
 "unit": "exchange_plan_list",
 "vintage": "PY2026",
 "source": {
  "dataset": "Vlada Exchange plan profile (composed from the CCIIO PUFs)",
  "publisher": "vlada",
  "catalog_updated_at": "2026-10-13"
 },
 "caveats": [],
 "response_hash": "d7af81eddd664accefd25d71aaec5f6d509f72a3442d76cd04d58fe01b004c47",
 "semantic_version": 1,
 "tool_version": "get_exchange_plan_profile@1.0.0",
 "explanation": null,
 "status": "complete",
 "audience": "customer",
 "answer": {
  "value_ref": "value",
  "unit": "exchange_plan_list",
  "scope": {
   "tool": "get_exchange_plan_profile",
   "filters": {
    "plan_year": 2026,
    "state": "TX",
    "include_rate_curve": true,
    "limit": 3
   }
  }
 },
 "method": "Computed over the filters shown in this answer's scope, from the sources listed in its evidence. Nothing outside those filters was included. You did not specify include_rate_curve; yes was used. You did not specify plan_year; 2026 was used.",
 "evidence": {
  "sources": [
   {
    "dataset": "Vlada Exchange plan profile (composed from the CCIIO PUFs)",
    "publisher": "vlada",
    "catalog_updated_at": "2026-10-13"
   }
  ],
  "response_hash": "d7af81eddd664accefd25d71aaec5f6d509f72a3442d76cd04d58fe01b004c47"
 },
 "defaults_applied": [
  {
   "param": "include_rate_curve",
   "used": true,
   "reason": "tool default"
  },
  {
   "param": "plan_year",
   "used": 2026,
   "reason": "tool default"
  }
 ]
}
```

REST: `POST https://api.vladahealth.com/v1/tools/get_exchange_plan_profile` with the inputs as the JSON body. MCP: the tool by name.
