{
  "openapi": "3.1.0",
  "info": {
    "title": "APRIL International — indicative health insurance quotes",
    "version": "1.0.0",
    "description": "APRIL International quote server (international health insurance for expats, digital nomads and temporary stays). Workflow: 1) ask whether the need is a temporary stay (short_term) or an expatriation (long_term); 2) for Singapore, Hong Kong, Indonesia or the UAE ask whether the person ALREADY lives there (local tariff) or is moving from abroad (worldwide tariff); 3) collect age (and dates for short stays); 4) call calculate_quote; 5) always show the disclaimer and ALWAYS end by inviting the user to get a personalised quote via quote_link. Never invent a price, an age or a default value; never quote without calling the tool. Prices are indicative."
  },
  "servers": [
    {
      "url": "https://jsxkqecohmyubrttyyfq.supabase.co/functions/v1/mcp"
    }
  ],
  "paths": {
    "/quote": {
      "get": {
        "operationId": "calculate_quote",
        "summary": "Returns an exact indicative premium from APRIL International's official tariffs for international health insurance (expats, digital nomads, temporary stays). Required: destination_country, stay_type, age; for SG/HK/ID/AE long term also living_in_destination; for AE also gender; for short_term also start_date+end_date or duration_days. Never invent missing values: ask the user.",
        "parameters": [
          {
            "name": "destination_country",
            "in": "query",
            "required": true,
            "description": "Destination / country of residence, ISO alpha-2 (e.g. SG) or name.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "stay_type",
            "in": "query",
            "required": true,
            "description": "long_term = expatriation (yearly cover); short_term = temporary stay.",
            "schema": {
              "type": "string",
              "enum": [
                "long_term",
                "short_term"
              ]
            }
          },
          {
            "name": "living_in_destination",
            "in": "query",
            "required": false,
            "description": "True if the person already lives in the destination (enables local SG/HK/ID/AE tariffs). False if moving from abroad, e.g. from France.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "age",
            "in": "query",
            "required": true,
            "description": "Age of the main insured person.",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "member_ages",
            "in": "query",
            "required": false,
            "description": "Ages of ALL insured persons (main insured included) for couples/families.",
            "schema": {
              "type": "string",
              "description": "Comma-separated list"
            }
          },
          {
            "name": "gender",
            "in": "query",
            "required": false,
            "description": "Required for Dubai (AE) single quotes.",
            "schema": {
              "type": "string",
              "enum": [
                "M",
                "F"
              ]
            }
          },
          {
            "name": "member_genders",
            "in": "query",
            "required": false,
            "description": "Dubai (AE) families: one gender per entry of member_ages, same order.",
            "schema": {
              "type": "string",
              "description": "Comma-separated list"
            }
          },
          {
            "name": "plan",
            "in": "query",
            "required": false,
            "description": "Plan / level (see list_coverage_options).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "deductible",
            "in": "query",
            "required": false,
            "description": "Deductible in the product currency (see list_coverage_options).",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "network",
            "in": "query",
            "required": false,
            "description": "",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "area",
            "in": "query",
            "required": false,
            "description": "Coverage area, e.g. WW_EXCL_US or WW.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "includes_outpatient",
            "in": "query",
            "required": false,
            "description": "",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "outpatient_coinsurance",
            "in": "query",
            "required": false,
            "description": "",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "includes_maternity",
            "in": "query",
            "required": false,
            "description": "",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "includes_dental",
            "in": "query",
            "required": false,
            "description": "",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "includes_usa",
            "in": "query",
            "required": false,
            "description": "",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "short_term_product",
            "in": "query",
            "required": false,
            "description": "Short-term product (default msc).",
            "schema": {
              "type": "string",
              "enum": [
                "msc",
                "mtc"
              ]
            }
          },
          {
            "name": "formula",
            "in": "query",
            "required": false,
            "description": "Short-term formula: EMERGENCY_1ER, COMFORT_1ER, COMFORT_COMP.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "start_date",
            "in": "query",
            "required": false,
            "description": "Short-term start date YYYY-MM-DD.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "end_date",
            "in": "query",
            "required": false,
            "description": "Short-term end date YYYY-MM-DD.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "duration_days",
            "in": "query",
            "required": false,
            "description": "",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "language",
            "in": "query",
            "required": false,
            "description": "User language (default en). Spanish speakers get the Spanish quote page; texts are returned in English.",
            "schema": {
              "type": "string",
              "enum": [
                "fr",
                "en",
                "es"
              ]
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "markdown",
                "json",
                "html"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Result (status ok) or invalid_input with explanation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/countries": {
      "get": {
        "operationId": "list_supported_countries",
        "summary": "Lists countries APRIL International can quote, or resolves a country name/alias (with did_you_mean suggestions).",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "required": false,
            "description": "",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "language",
            "in": "query",
            "required": false,
            "description": "User language (default en). Spanish speakers get the Spanish quote page; texts are returned in English.",
            "schema": {
              "type": "string",
              "enum": [
                "fr",
                "en",
                "es"
              ]
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "markdown",
                "json",
                "html"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Result (status ok) or invalid_input with explanation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/coverages": {
      "get": {
        "operationId": "list_coverage_options",
        "summary": "Returns the plans, deductibles and modules available for a destination and situation, and which APRIL tariff applies.",
        "parameters": [
          {
            "name": "destination_country",
            "in": "query",
            "required": true,
            "description": "",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "living_in_destination",
            "in": "query",
            "required": false,
            "description": "",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "stay_type",
            "in": "query",
            "required": false,
            "description": "",
            "schema": {
              "type": "string",
              "enum": [
                "long_term",
                "short_term"
              ]
            }
          },
          {
            "name": "language",
            "in": "query",
            "required": false,
            "description": "User language (default en). Spanish speakers get the Spanish quote page; texts are returned in English.",
            "schema": {
              "type": "string",
              "enum": [
                "fr",
                "en",
                "es"
              ]
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "markdown",
                "json",
                "html"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Result (status ok) or invalid_input with explanation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/link": {
      "get": {
        "operationId": "get_personalized_quote_link",
        "summary": "Returns the most relevant APRIL International online quote & application page for the user's situation. No personal data is sent.",
        "parameters": [
          {
            "name": "destination_country",
            "in": "query",
            "required": false,
            "description": "",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "living_in_destination",
            "in": "query",
            "required": false,
            "description": "",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "stay_type",
            "in": "query",
            "required": false,
            "description": "",
            "schema": {
              "type": "string",
              "enum": [
                "long_term",
                "short_term"
              ]
            }
          },
          {
            "name": "language",
            "in": "query",
            "required": false,
            "description": "User language (default en). Spanish speakers get the Spanish quote page; texts are returned in English.",
            "schema": {
              "type": "string",
              "enum": [
                "fr",
                "en",
                "es"
              ]
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "markdown",
                "json",
                "html"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Result (status ok) or invalid_input with explanation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              },
              "text/markdown": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    }
  }
}