MCP reference
Find Medicare Advantage plans for my doctors
Use this when someone wants Medicare Advantage plans for doctors they want to keep, including “plans for Dr. X”. Default is a ranked comparison from the same recommendation API as the website, with every selected doctor required. Confirm doctor/office and missing medications, pharmacy and Medicaid inputs; never assume empty medications or no Medicaid. Reuse ranking_context with rank_medicare_advantage_plans to continue, changing only the requested selection. TPP does the comparison: preserve returned rank and show actual premium, Part B giveback and network confidence. Do not ask the person to choose an unranked plan to compare. Missing prices remain unknown. Use comparison=network_only only for an explicit network-listing request; include_partial needs agreement. Facilities are unsupported. For one chosen plan use check_my_doctors_in_plan_network. An optional website alternative: TPP’s Plan Comparison. Offer only when requested; chat can continue. Opens a separate flow without transferring answers. For another tool, use recommend_website_tool. Use the app as the answer. Do not repeat its options in a list, table or explanation. Ask one short question if input is required; otherwise stop.
Tool name
find_medicare_plans_for_my_doctors
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"zip": {
"type": "string",
"pattern": "^\\d{5}$",
"description": "Five-digit home ZIP for plan availability; keep it separate from doctor/pharmacy search ZIPs."
},
"county": {
"type": "string",
"minLength": 1,
"maxLength": 60,
"description": "Confirmed county for this ZIP. Omit if unknown so the tool can ask when ambiguous."
},
"state": {
"type": "string",
"pattern": "^[A-Z]{2}$",
"description": "Two-letter state from the confirmed ZIP/county lookup; never guess."
},
"plan_year": {
"description": "If omitted, use and disclose the API serving year after resolving the home county. Preserve an explicitly selected supported lineup year.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"drugs": {
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"medication": {
"anyOf": [
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 2,
"maxLength": 100
},
"option_id": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
},
"required": [
"query",
"option_id"
],
"additionalProperties": false
},
{
"type": "string",
"minLength": 2,
"maxLength": 100
},
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 2,
"maxLength": 100
},
"rxcui": {
"type": "string",
"maxLength": 20
},
"dosage": {
"type": "string",
"minLength": 1,
"maxLength": 60
}
},
"additionalProperties": false
}
]
},
"quantity": {
"type": "integer",
"minimum": 1,
"maximum": 999
},
"days_supply": {
"anyOf": [
{
"type": "number",
"const": 30
},
{
"type": "number",
"const": 60
},
{
"type": "number",
"const": 90
}
]
}
},
"required": [
"medication"
],
"additionalProperties": false
},
"description": "Up to ten exact medication/refill entries. Use find_medication for choices; collect quantity and days_supply. [] means intentionally omitted."
},
"pharmacy": {
"type": "object",
"properties": {
"search": {
"type": "object",
"properties": {
"zip": {
"type": "string",
"pattern": "^\\d{5}$"
},
"q": {
"type": "string",
"minLength": 2,
"maxLength": 100
},
"county": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"state": {
"type": "string",
"pattern": "^[A-Z]{2}$"
},
"include_farther": {
"default": false,
"type": "boolean"
}
},
"required": [
"zip"
],
"additionalProperties": false
},
"option_id": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
},
"required": [
"search",
"option_id"
],
"additionalProperties": false,
"description": "Confirmed pharmacy_reference from find_medicare_pharmacies, not a guessed branch or bare identifier."
},
"pharmacy_preference": {
"type": "string",
"enum": [
"retail",
"mail_order",
"no_preference"
],
"description": "User choice: retail, mail_order or no_preference. Do not infer agreement or substitute a retail branch for mail order."
},
"limit": {
"default": 10,
"type": "integer",
"minimum": 1,
"maximum": 10,
"description": "Maximum displayed results, from 1 to 10; default 10."
},
"health_profile": {
"description": "The person’s stated healthcare-use band: low, moderate, high, or very_high. Reuse explicit answers; never infer from diagnoses.",
"type": "object",
"properties": {
"utilization": {
"type": "string",
"enum": [
"low",
"moderate",
"high",
"very_high"
]
}
},
"additionalProperties": false
},
"plan_concerns": {
"description": "Stated plan concerns. Website scoring recognizes Referrals and Customer service; preserve the person’s explicit answers.",
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"priorities": {
"maxItems": 16,
"type": "array",
"items": {
"type": "string",
"enum": [
"keep-doctors",
"low-premium",
"low-oop",
"drug-coverage",
"dental",
"vision",
"hearing",
"fitness",
"otc",
"transportation",
"telehealth",
"meal-delivery",
"acupuncture",
"worldwide-coverage",
"pharmacy-network",
"benefits"
]
},
"description": "Only the person’s stated supported MA priorities; do not infer preferences from demographics."
},
"offer_rx": {
"description": "False requests MA-only plans without Part D; true or omitted requests plans with Part D. Never infer false from missing medications.",
"type": "boolean"
},
"provider_network_policy": {
"description": "Defaults to strict_all_in_network when doctors are supplied, otherwise score. An explicit score policy retains the broader API ranking pool. strict_all_in_network requires positive evidence for every selected doctor, including directory-likely matches; it does not certify exact-office participation.",
"type": "string",
"enum": [
"score",
"strict_all_in_network"
]
},
"plan_types": {
"description": "Defaults to the website HMO/PPO pool. Use an explicitly requested network-type subset; this is separate from drug coverage and SNP eligibility.",
"minItems": 1,
"maxItems": 3,
"type": "array",
"items": {
"type": "string",
"enum": [
"HMO",
"PPO",
"PFFS"
]
}
},
"medicaid": {
"type": "string",
"enum": [
"yes",
"no",
"unsure"
],
"description": "User-reported Medicaid enrollment: yes, no or unsure. Not an eligibility verification."
},
"medicaid_cost_sharing": {
"type": "string",
"enum": [
"yes",
"no",
"unsure"
],
"description": "User-reported Medicaid help with Medicare cost sharing: yes, no or unsure."
},
"full_medicaid_benefits": {
"type": "string",
"enum": [
"yes",
"no",
"unsure"
],
"description": "User-reported full Medicaid benefits: yes, no or unsure. Do not infer eligibility."
},
"current_plan": {
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 2,
"maxLength": 150
},
"option_id": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
},
"required": [
"query",
"option_id"
],
"additionalProperties": false,
"description": "Confirmed current MA plan reference for a requested ranking comparison; retain its location/year context."
},
"current_plan_name": {
"type": "string",
"minLength": 2,
"maxLength": 150,
"description": "Familiar current MA plan name/insurer; ambiguous versions require confirmation."
},
"csnp_condition_keys": {
"maxItems": 7,
"type": "array",
"items": {
"type": "string",
"enum": [
"diabetes",
"heart",
"copd",
"esrd",
"dementia",
"hiv",
"mental_health"
]
},
"description": "Only supported condition categories explicitly reported for this ranking; not a diagnosis or eligibility decision."
},
"vision_profile": {
"type": "object",
"properties": {
"intent": {
"type": "string",
"enum": [
"coverage",
"priced_need"
]
},
"wears": {
"type": "string",
"enum": [
"glasses",
"contacts",
"both",
"none"
]
},
"replacement_cadence": {
"type": "string",
"enum": [
"yearly",
"every_2_3_years",
"rarely"
]
},
"lens_type": {
"type": "string",
"enum": [
"single_vision",
"progressive",
"unknown"
]
}
},
"additionalProperties": false,
"description": "User-reported supported vision needs for the MA ranking; omit unknown fields."
},
"benefit_choices": {
"type": "object",
"properties": {
"dental": {
"type": "object",
"properties": {
"intent": {
"type": "string",
"enum": [
"coverage",
"priced_need"
]
},
"annual_spend": {
"type": "string",
"enum": [
"low",
"medium",
"high",
"very_high",
"not_sure"
]
},
"usage": {
"type": "string",
"enum": [
"preventive",
"comprehensive",
"both",
"unknown"
]
},
"situation": {
"type": "string",
"enum": [
"own_teeth",
"missing_teeth",
"dentures",
"not_sure"
]
},
"procedure": {
"type": "string",
"enum": [
"crown",
"root_canal",
"denture",
"perio",
"extraction",
"not_sure"
]
}
},
"additionalProperties": false
},
"otc": {
"type": "object",
"properties": {
"intent": {
"type": "string",
"enum": [
"coverage",
"priced_need"
]
},
"monthly_spend": {
"type": "string",
"enum": [
"low",
"medium",
"high",
"not_sure"
]
}
},
"additionalProperties": false
},
"hearing": {
"type": "object",
"properties": {
"intent": {
"type": "string",
"enum": [
"coverage",
"priced_need"
]
},
"device_tier": {
"type": "string",
"enum": [
"basic",
"mid",
"premium",
"not_sure"
]
},
"replacement_timing": {
"type": "string",
"enum": [
"soon",
"later",
"eventually",
"none",
"no",
"not_sure"
]
},
"usage": {
"type": "string",
"enum": [
"current_wearer",
"prospective",
"exam_only",
"not_sure"
]
}
},
"additionalProperties": false
}
},
"additionalProperties": false,
"description": "User-reported supported dental, OTC and hearing needs for the MA ranking; never invent spending or usage."
},
"providers": {
"minItems": 1,
"maxItems": 10,
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"search": {
"type": "object",
"properties": {
"zip": {
"type": "string",
"pattern": "^\\d{5}$"
},
"county": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"state": {
"type": "string",
"minLength": 2,
"maxLength": 2,
"pattern": "^[A-Z]{2}$"
},
"q": {
"type": "string",
"minLength": 2,
"maxLength": 60
},
"specialty": {
"type": "string",
"minLength": 2,
"maxLength": 100
},
"facility": {
"type": "string",
"minLength": 2,
"maxLength": 120
},
"facility_reference": {
"type": "object",
"properties": {
"search": {
"type": "object",
"properties": {
"q": {
"type": "string",
"minLength": 2,
"maxLength": 120
},
"zip": {
"type": "string",
"pattern": "^\\d{5}$"
},
"county": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"state": {
"type": "string",
"pattern": "^[A-Z]{2}$"
},
"radius": {
"default": 25,
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"q",
"zip"
],
"additionalProperties": false
},
"organization_id": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"location_id": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
},
"required": [
"search",
"organization_id",
"location_id"
],
"additionalProperties": false
},
"pcp_only": {
"type": "boolean"
},
"accepts_medicare_assignment": {
"type": "boolean"
},
"show_offices": {
"type": "boolean"
},
"office_option": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
},
"required": [
"zip"
],
"additionalProperties": false
},
"option_id": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
},
"required": [
"search",
"option_id"
],
"additionalProperties": false
},
{
"type": "string",
"minLength": 2,
"maxLength": 60
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"doctor",
"facility"
]
},
"name": {
"type": "string",
"minLength": 2,
"maxLength": 120
},
"office_zip": {
"type": "string",
"pattern": "^\\d{5}$"
},
"county": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"state": {
"type": "string",
"pattern": "^[A-Z]{2}$"
},
"specialty": {
"type": "string",
"minLength": 2,
"maxLength": 100
},
"clinic": {
"type": "string",
"minLength": 2,
"maxLength": 120
}
},
"additionalProperties": false
}
]
},
"description": "Up to ten doctor/office inputs or confirmed references. Facilities cannot receive doctor-network verdicts."
},
"comparison": {
"default": "ranked",
"description": "Default ranked compares plans using the website recommendation API. Use network_only only for an explicit request for network listings without a recommendation.",
"type": "string",
"enum": [
"ranked",
"network_only"
]
},
"include_partial": {
"default": false,
"description": "Only for explicitly requested network_only discovery after agreement to see fewer-doctor matches. Never relax a ranked doctor requirement.",
"type": "boolean"
}
},
"additionalProperties": false
}
Example request
Minimal synthetic request after initialization. A missing-input clarification is a valid result; do not invent personal facts to complete it. For content retrieval, replace the illustrative fixture ID with an ID returned by search.
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "find_medicare_plans_for_my_doctors",
"arguments": {}
}
}
Connection
POST JSON-RPC to https://tools.thepocketprotector.com/mcp with method tools/call, name find_medicare_plans_for_my_doctors, and arguments matching the schema above. Call tools/list to verify deployed availability.
Results and errors
Read both content and structuredContent. Follow returned clarification or continuation steps. Preserve source attribution, dates, uncertainty and scope. isError: true means the lookup did not complete. HTTP 429 requires waiting for Retry-After; never repeatedly retry an unavailable lookup.
Tool annotations
{
"title": "Find Medicare Advantage plans for my doctors",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
Authentication: public, no account or API key required. Public tools perform no enrollment or account writes.
Read this page as Markdown