Swiss health insurance 2027: rank every insurer, model and deductible with official BAG data.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Rank every insurer, model and deductible for one person by the full yearly cost for 2027 (premiums plus the bills they pay themselves). Returns the best options, the best deductible, the break-even point, the worst case and the saving against their current insurance.
Swiss 4 digit postcode, e.g. 8001
Age in 2027
Works at least 8 hours a week for one employer. If true, accident cover is left out because the employer covers it
How many options to return, default 5, best per insurer
Only show this insurance model
Only show this deductible (300, 500, 1000, 1500, 2000 or 2500)
Family doctor visits per year (about CHF 150 each)
Name of the current insurer, e.g. "Helsana"
BFS number from find_postcode, only needed if the postcode covers several municipalities
Their deductible today
Specialist or therapy sessions per year (about CHF 280 each)
Expected doctor bills per year in CHF. If missing, estimated from the visit counts below
Medication in CHF per month
What they pay today per month for basic insurance
Rank every insurer, model and deductible for one person by the full yearly cost for 2027 (premiums plus the bills they pay themselves). Returns the best options, the best deductible, the break-even point, the worst case and the saving against their current insurance.
| Argument | Type | Description |
|---|---|---|
| limit | integer | How many options to return, default 5, best per insurer |
| model | string | Only show this insurance model |
| postcode* | integer | Swiss 4 digit postcode, e.g. 8001 |
| age_group* | string | Age in 2027 |
| franchise | integer | Only show this deductible (300, 500, 1000, 1500, 2000 or 2500) |
| gp_visits | integer | Family doctor visits per year (about CHF 150 each) |
| current_insurer | string | Name of the current insurer, e.g. "Helsana" |
| municipality_bfs | integer | BFS number from find_postcode, only needed if the postcode covers several municipalities |
| current_franchise | integer | Their deductible today |
| specialist_visits | integer | Specialist or therapy sessions per year (about CHF 280 each) |
| works_8h_per_week* | boolean | Works at least 8 hours a week for one employer. If true, accident cover is left out because the employer covers it |
| yearly_health_costs | number | Expected doctor bills per year in CHF. If missing, estimated from the visit counts below |
| medication_per_month | number | Medication in CHF per month |
| current_monthly_premium | number | What they pay today per month for basic insurance |
{
"type": "object",
"required": [
"postcode",
"age_group",
"works_8h_per_week"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "How many options to return, default 5, best per insurer"
},
"model": {
"enum": [
"standard",
"hausarzt",
"hmo",
"telmed",
"flex"
],
"type": "string",
"description": "Only show this insurance model"
},
"postcode": {
"type": "integer",
"maximum": 9999,
"minimum": 1000,
"description": "Swiss 4 digit postcode, e.g. 8001"
},
"age_group": {
"enum": [
"19-25",
"26+"
],
"type": "string",
"description": "Age in 2027"
},
"franchise": {
"type": "integer",
"description": "Only show this deductible (300, 500, 1000, 1500, 2000 or 2500)"
},
"gp_visits": {
"type": "integer",
"maximum": 100,
"minimum": 0,
"description": "Family doctor visits per year (about CHF 150 each)"
},
"current_insurer": {
"type": "string",
"description": "Name of the current insurer, e.g. \"Helsana\""
},
"municipality_bfs": {
"type": "integer",
"minimum": 0,
"description": "BFS number from find_postcode, only needed if the postcode covers several municipalities"
},
"current_franchise": {
"type": "integer",
"description": "Their deductible today"
},
"specialist_visits": {
"type": "integer",
"maximum": 200,
"minimum": 0,
"description": "Specialist or therapy sessions per year (about CHF 280 each)"
},
"works_8h_per_week": {
"type": "boolean",
"description": "Works at least 8 hours a week for one employer. If true, accident cover is left out because the employer covers it"
},
"yearly_health_costs": {
"type": "number",
"maximum": 200000,
"minimum": 0,
"description": "Expected doctor bills per year in CHF. If missing, estimated from the visit counts below"
},
"medication_per_month": {
"type": "number",
"maximum": 5000,
"minimum": 0,
"description": "Medication in CHF per month"
},
"current_monthly_premium": {
"type": "number",
"maximum": 3000,
"minimum": 0,
"description": "What they pay today per month for basic insurance"
}
}
}Write the German letter to cancel basic insurance (Kündigung) or to change deductible or model with the same insurer. The person prints it, signs it by hand and posts it so it arrives by 30 November. Nothing is stored.
| Argument | Type | Description |
|---|---|---|
| kind* | string | "cancel" to leave the current insurer, "change" to stay and change deductible or model |
| street* | string | |
| full_name* | string | |
| new_model | string | Only for kind "change" |
| birth_date | string | |
| new_franchise | integer | Only for kind "change" |
| postcode_town* | string | e.g. "8008 Zürich" |
| current_insurer* | string | |
| insurer_address | string |
Look up a Swiss postcode: municipalities, canton and BAG premium region. Use it when a postcode may cover several municipalities.
| Argument | Type | Description |
|---|---|---|
| postcode* | integer | Swiss 4 digit postcode |
{
"type": "object",
"required": [
"postcode"
],
"properties": {
"postcode": {
"type": "integer",
"maximum": 9999,
"minimum": 1000,
"description": "Swiss 4 digit postcode"
}
}
}The dates that matter for changing Krankenkasse, model or deductible for 2027, with days left from today.
No arguments.
{
"type": "object",
"properties": {}
}| insurance_number | string |
{
"type": "object",
"required": [
"kind",
"full_name",
"street",
"postcode_town",
"current_insurer"
],
"properties": {
"kind": {
"enum": [
"cancel",
"change"
],
"type": "string",
"description": "\"cancel\" to leave the current insurer, \"change\" to stay and change deductible or model"
},
"street": {
"type": "string"
},
"full_name": {
"type": "string"
},
"new_model": {
"type": "string",
"description": "Only for kind \"change\""
},
"birth_date": {
"type": "string"
},
"new_franchise": {
"type": "integer",
"description": "Only for kind \"change\""
},
"postcode_town": {
"type": "string",
"description": "e.g. \"8008 Zürich\""
},
"current_insurer": {
"type": "string"
},
"insurer_address": {
"type": "string"
},
"insurance_number": {
"type": "string"
}
}
}