# 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](https://go.thepocketprotector.com/ma-compare-v2). 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

```json
{
  "$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.

```json
{
  "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

```json
{
  "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.
