# Check one doctor’s network step by step

Use this when someone wants a step-by-step single-doctor Medicare Advantage network check, especially with clickable choices. Resolve missing home/search counties, doctor AND office, plan and year; ask the returned next question and resume with returned context. For clickable choices pass that context to show_doctor_plan_choices; text replies also work. Clear dependent selections when their inputs change. Preserve network confidence and office uncertainty; unknown is not out of network. Use check_my_doctors_in_plan_network for a doctor list. This does not verify Original Medicare participation or hospital networks. 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

`check_doctor_network_step_by_step`

## Input schema

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "language": {
      "type": "string",
      "enum": [
        "en",
        "es"
      ],
      "description": "Language for the guided Medicare selection card; preserve the user’s language choice."
    },
    "coverage_type": {
      "type": "string",
      "enum": [
        "medicare_advantage",
        "original_medicare",
        "medigap"
      ],
      "description": "Coverage type for this guided check. Only Medicare Advantage supports a network verdict here."
    },
    "zip": {
      "description": "Home ZIP for plan availability.",
      "type": "string",
      "pattern": "^\\d{5}$"
    },
    "county": {
      "description": "Confirmed home county name; never infer it from a doctor’s office.",
      "type": "string",
      "minLength": 2,
      "maxLength": 60
    },
    "state": {
      "type": "string",
      "pattern": "^[A-Z]{2}$",
      "description": "Two-letter state from the confirmed ZIP/county lookup; never guess."
    },
    "county_choice": {
      "description": "Returned home-county choice, scoped to its ZIP.",
      "type": "string",
      "pattern": "^[a-f0-9]{64}$"
    },
    "doctor_zip": {
      "description": "Search near this ZIP if the doctor is outside the home area.",
      "type": "string",
      "pattern": "^\\d{5}$"
    },
    "doctor_county": {
      "type": "string",
      "minLength": 2,
      "maxLength": 60,
      "description": "Confirmed county for the doctor search ZIP, separate from the home county."
    },
    "doctor_state": {
      "type": "string",
      "pattern": "^[A-Z]{2}$",
      "description": "Confirmed state for the doctor search ZIP, separate from the home state."
    },
    "doctor_county_choice": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$",
      "description": "Returned county choice for the doctor-search area; preserve its context and do not invent a selection."
    },
    "doctor_name": {
      "type": "string",
      "minLength": 2,
      "maxLength": 60,
      "description": "Familiar doctor name supplied by the person. Confirm the returned doctor and office before checking coverage."
    },
    "specialty": {
      "type": "string",
      "minLength": 2,
      "maxLength": 100,
      "description": "Supported doctor specialty; All Specialties removes only this filter."
    },
    "plan_name": {
      "type": "string",
      "minLength": 2,
      "maxLength": 100,
      "description": "Familiar Medicare Advantage plan name and insurer supplied by the person; confirm ambiguous choices."
    },
    "plan_year": {
      "type": "integer",
      "minimum": 2024,
      "maximum": 2035,
      "description": "Reuse the requested or previously selected coverage year. If omitted, use the API’s configured serving year and disclose it; do not ask just because the year is missing."
    },
    "doctor_id": {
      "description": "Opaque option ID returned by this workflow. Never ask a person to find it.",
      "type": "string",
      "pattern": "^[a-f0-9]{64}$"
    },
    "plan_key": {
      "description": "Opaque option ID returned by this workflow, scoped to area and year.",
      "type": "string",
      "pattern": "^[a-f0-9]{64}$"
    }
  },
  "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": "check_doctor_network_step_by_step",
    "arguments": {}
  }
}
```

## Connection

POST JSON-RPC to https://tools.thepocketprotector.com/mcp with method `tools/call`, name `check_doctor_network_step_by_step`, 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": "Check one doctor’s network step by step",
  "readOnlyHint": true,
  "openWorldHint": true,
  "destructiveHint": false
}
```

Authentication: public, no account or API key required. Public tools perform no enrollment or account writes.
