Skip to content
The Pocket ProtectorDevelopersVisit TPP ↗

MCP reference

Check medications on one plan’s drug list

Use this when someone wants to check up to ten exact medications on one MA or Part D plan’s published formulary. Confirm plan and medications; resume batch_context, changing only selection_for.medication_index. Distinguish listed, not found, unable to verify and no Part D benefit. Preserve completed checks when another fails. Prior authorization, step therapy and quantity limits are not verified. Published 30-day tier cost sharing is not pharmacy-specific or an annual total. Use compare_plan_drug_costs for pharmacy-savings estimates across plans. An optional website alternative: TPP’s Drug Cost Analyzer. 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

check_plan_drug_coverage

Input schema

{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "zip": {
      "type": "string",
      "pattern": "^[0-9]{5}$",
      "description": "Residential ZIP for plan availability; reuse when known."
    },
    "county": {
      "type": "string",
      "description": "Confirmed home county. Ask when the ZIP spans counties."
    },
    "state": {
      "type": "string",
      "pattern": "^[A-Z]{2}$",
      "description": "Two-letter state returned by county lookup."
    },
    "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."
    },
    "plan_name": {
      "type": "string",
      "description": "Familiar full plan name and insurance company."
    },
    "plan": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "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 plan reference returned by the plan picker. Never invent query/option_id or ask for internal IDs."
    },
    "drugs": {
      "type": "array",
      "minItems": 1,
      "maxItems": 10,
      "items": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "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
              },
              "strength": {
                "type": "string",
                "minLength": 1,
                "maxLength": 60
              },
              "form": {
                "type": "string",
                "minLength": 1,
                "maxLength": 60
              },
              "release_type": {
                "type": "string",
                "minLength": 1,
                "maxLength": 60
              }
            },
            "additionalProperties": false
          }
        ]
      },
      "description": "Medication names with known strength/form/release type, or confirmed medication references from find_medication. Never use a bare RxCUI as a selection."
    }
  }
}

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": "check_plan_drug_coverage",
    "arguments": {}
  }
}

Connection

POST JSON-RPC to https://tools.thepocketprotector.com/mcp with method tools/call, name check_plan_drug_coverage, 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": "Check medications on one plan’s drug list",
  "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