# Find a clinic or facility location

Use this when someone wants to identify a clinic, medical group or hospital organization and its location. Search by name and ZIP, choose the organization then address, and pass facility_reference to find_medicare_doctors for that office’s doctors. Default radius is 25 miles; change only on request. Distance can fall back to a broader ZIP area, so do not promise a radius when unavailable. This is location selection, not hospital ratings or facility network verification. 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_facilities`

## Input schema

```json
{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "minLength": 2,
      "maxLength": 120,
      "description": "Clinic or medical group name supplied by the person. No fabricated aliases."
    },
    "zip": {
      "type": "string",
      "pattern": "^[0-9]{5}$",
      "description": "ZIP near the requested facility; do not overwrite a separately known residential ZIP."
    },
    "county": {
      "type": "string",
      "description": "Confirmed county for this search ZIP; omit if unknown so the tool can ask."
    },
    "state": {
      "type": "string",
      "pattern": "^[A-Z]{2}$",
      "description": "State from the county lookup."
    },
    "radius": {
      "type": "integer",
      "enum": [
        5,
        10,
        15,
        25,
        50,
        100
      ],
      "default": 25,
      "description": "Requested website distance preset in miles. Default 25; never broaden silently."
    },
    "organization_id": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$",
      "description": "Returned organization choice after the person selects it. Keep search inputs unchanged."
    },
    "location_id": {
      "type": "string",
      "pattern": "^[a-f0-9]{64}$",
      "description": "Returned location choice after the person selects it. Keep the organization and search inputs unchanged."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10,
      "default": 10,
      "description": "Maximum displayed results, from 1 to 10 (default 10)."
    }
  },
  "required": [
    "q",
    "zip"
  ],
  "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_facilities",
    "arguments": {
      "q": "hospital",
      "zip": "60614"
    }
  }
}
```

## Connection

POST JSON-RPC to https://tools.thepocketprotector.com/mcp with method `tools/call`, name `find_medicare_facilities`, 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 a clinic or facility location",
  "readOnlyHint": true,
  "openWorldHint": true,
  "destructiveHint": false
}
```

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