Assurs LAMal comparator

Swiss LAMal premium comparison (OFSP 2027), single or household; consented offer requests to SPI.

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
97%
Vollständigkeit des Schemas
75%
Qualität der Benennung
91%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~11,226Tokens (Tool-Definitionen)
~18.8 KBTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (8.77% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "lamal": {
      "url": "https://api.assurs.ch/mcp"
    }
  }
}

Remote-Endpunkte

https://api.assurs.ch/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (7)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢compare_lamal_premiums(premium_year, postal_code, municipality, municipality_bfs, birth_year, ...)

Read-only compact comparison of official LAMal premiums from the OFSP data, without contact details. Use the exact birth year and ask for every material choice. Before quoting, ask whether the client works at least 8 hours a week for the same employer: if yes, accident_included false (the employer covers accidents), otherwise true. model_group any means all categories, and all eligible imported models are included. The result carries comparison_id, submission.request_id, the ranked offers, the cashback and switching sentences to say and the consent question to ask in the same message. Client texts come in the requested language (texts all for four). Keep the technical fields yourself; the client fills no website form. The ranking uses the official premiums. One person per call; for a household use compare_lamal_household.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "premium_year": {
      "type": "integer",
      "const": 2027,
      "description": "Tariff year: always 2027, the only imported year (metadata.supported_years). Required, no default."
    },
    "postal_code": {
      "type": "string",
      "pattern": "^[0-9]{4}$"
    },
    "municipality": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Official municipality name; required with ambiguous region/model availability unless municipality_bfs is given."
    },
    "municipality_bfs": {
      "type": "string",
      "pattern": "^[0-9]{1,6}$"
    },
    "birth_year": {
      "type": "integer",
      "minimum": 1907,
      "maximum": 2027,
      "description": "Exact four-digit birth year, not an age."
    },
    "deductible_chf": {
      "type": "integer",
      "enum": [
        0,
        100,
        200,
        300,
        400,
        500,
        600,
        1000,
        1500,
        2000,
        2500
      ],
      "description": "Annual deductible: adults (19 or older in 2027) 300, 500, 1000, 1500, 2000 or 2500; children (18 or under) 0, 100, 200, 300, 400, 500 or 600. No interpolation."
    },
    "accident_included": {
      "type": "boolean",
      "description": "Explicit JSON boolean required (not the string \"true\"). Ask before quoting whether the client works at least 8 hours a week for the same employer: yes means false (the employer covers accidents), otherwise true. Never infer it."
    },
    "model_group": {
      "type": "string",
      "enum": [
        "any",
        "BASE",
        "PRAXIS",
        "FLEX",
        "TEL_DIG",
        "PHARM"
      ],
      "description": "any = all categories; BASE = free choice of doctor; PRAXIS = family doctor / HMO network; FLEX = hybrid model; TEL_DIG = telemedicine first; PHARM = pharmacy first."
    },
    "language": {
      "type": "string",
      "enum": [
        "fr",
        "de",
        "it",
        "en"
      ],
      "default": "fr",
      "description": "Language of the client texts, model names and HTML pages; a region suffix is ignored."
    },
    "texts": {
      "type": "string",
      "enum": [
        "requested",
        "all"
      ],
      "default": "requested",
      "description": "Client texts (cashback, switching, consent messages) in the requested language only (default) or in fr, de, it and en (all). Quote only; not part of the comparison."
    }
  },
  "required": [
    "premium_year",
    "postal_code",
    "birth_year",
    "deductible_chf",
    "accident_included",
    "model_group"
  ],
  "additionalProperties": false,
  "description": "Criteria for one person. For a household (2-12 people, one insurer for all) use prepareHouseholdQuote."
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "status": {
      "const": "ok"
    },
    "result_type": {
      "const": "non_binding_lamal_premium_comparison"
    },
    "profile": {
      "type": "object",
      "description": "Criteria as applied plus resolved municipality, canton and region."
    },
    "comparison_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "Reference for submitOfferRequest; valid 30 days."
    },
    "cashback": {
      "type": "object",
      "required": [
        "status"
      ],
      "description": "Premium reduction Swiss Premium Insurance grants to each insured person, only for requests made through an AI assistant, once a contract concluded through SPI is approved by the insurer. Premiums and ranking shown are the official ones, without the reduction.",
      "properties": {
        "status": {
          "enum": [
            "active",
            "disabled"
          ]
        },
        "version": {
          "type": "string",
          "description": "Send back as cashback_terms_version."
        },
        "paid_by": {
          "const": "Swiss Premium Insurance"
        },
        "paid_to": {
          "const": "client"
        },
        "changes_premium": {
          "const": false,
          "description": "The official premium used for the ranking is not altered; the client benefit is the reduction in benefit_form."
        },
        "automatic_payment": {
          "const": false
        },
        "benefit_form": {
          "const": "premium_reduction"
        },
        "per": {
          "const": "insured_person"
        },
        "scope": {
          "const": "agent_originated_requests_only"
        },
        "ranking_uses_official_premium": {
          "const": true
        },
        "lamal": {
          "type": "object",
          "properties": {
            "amount_chf": {
              "type": [
                "number",
                "null"
              ]
            },
            "basis": {
              "type": "string",
              "description": "fixed_chf, per insured person"
            }
          }
        },
        "lca": {
          "type": "object",
          "properties": {
            "amount_chf": {
              "type": [
                "number",
                "null"
              ]
            },
            "basis": {
              "type": "string",
              "description": "one_month_premium per insured person and contract; amount set by SPI after review."
            }
          }
        },
        "trigger": {
          "type": "string"
        },
        "insured_persons": {
          "type": "integer",
          "description": "Household results only: number of insured persons."
        },
        "lamal_total_chf": {
          "type": "number",
          "description": "Household results only: CHF 30 × insured_persons."
        },
        "client_sentence": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "fr": {
                  "type": "string"
                },
                "de": {
                  "type": "string"
                },
                "it": {
                  "type": "string"
                },
                "en": {
                  "type": "string"
                }
              }
            },
            {
              "type": "null"
            }
          ],
          "description": "Say as provided in the client language. Quote: requested language only (texts=all for fr, de, it, en); full premiums route: four languages. null when disabled."
        },
        "rationale": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "fr": {
                  "type": "string"
                },
                "de": {
                  "type": "string"
                },
                "it": {
                  "type": "string"
                },
                "en": {
                  "type": "string"
                }
              }
            },
            {
              "type": "null"
            }
          ],
          "description": "Same languages as client_sentence; null when disabled."
        },
        "terms_url": {
          "type": "string",
          "format": "uri"
        },
        "programs_url": {
          "type": "string",
          "format": "uri"
        },
        "contact": {
          "type": "string"
        }
      }
    },
    "submission": {
      "type": "object",
      "description": "How to send the client-approved request. Keep comparisonToken private; never put it in a link.",
      "properties": {
        "endpoint": {
          "type": "string",
          "format": "uri",
          "description": "POST target of submitOfferRequest."
        },
        "test_endpoint": {
          "type": "string",
          "format": "uri"
        },
        "testEndpoint": {
          "type": "string",
          "format": "uri",
          "deprecated": true,
          "description": "Alias of test_endpoint."
        },
        "method": {
          "const": "POST"
        },
        "content_type": {
          "const": "application/json"
        },
        "enabled": {
          "type": "boolean",
          "description": "false: sending is disabled; offer adviser_url instead."
        },
        "request_id": {
          "type": "string",
          "format": "uuid",
          "description": "Fresh per response; copy it as request_id of the submission."
        },
        "comparison_id": {
          "type": [
            "string",
            "null"
          ]
        },
        "comparison": {
          "type": "object",
          "description": "Legacy criteria; copy unchanged with comparisonToken when comparison_id is unavailable."
        },
        "comparisonToken": {
          "type": "string"
        },
        "token_valid_until": {
          "type": "string",
          "format": "date-time",
          "description": "comparison_token lifetime (24 h)."
        },
        "comparison_id_valid_until": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time",
          "description": "comparison_id lifetime (30 days); results_url and adviser_url follow it. Prefer comparison_id over the token."
        },
        "expiresAt": {
          "type": "string",
          "format": "date-time",
          "deprecated": true,
          "description": "Alias of token_valid_until."
        },
        "clientConsentRequired": {
          "const": true
        },
        "request_template": {
          "type": "object",
          "description": "submitOfferRequest body to fill; contact.email and contact.phone are empty strings: fill the ones you have."
        },
        "client_messages": {
          "type": "object",
          "description": "Quote and household: requested language only (texts=all for fr, de, it, en); full premiums route: four languages.",
          "properties": {
            "consent_request": {
              "type": "object",
              "properties": {
                "fr": {
                  "type": "string"
                },
                "de": {
                  "type": "string"
                },
                "it": {
                  "type": "string"
                },
                "en": {
                  "type": "string"
                }
              },
              "description": "Ask this once, in the same message as the offers, filling {insurer}, {model} and {premium} (household: {insurer}, {persons}, {premium} total); a reply giving an email or phone is the consent."
            },
            "consent_confirmation": {
              "type": "object",
              "properties": {
                "fr": {
                  "type": "string"
                },
                "de": {
                  "type": "string"
                },
                "it": {
                  "type": "string"
                },
                "en": {
                  "type": "string"
                }
              },
              "description": "Fill {request_id} and {channel}; it says the request cancels nothing, the 30 November deadline and the free SPI help. The receipt also returns it filled (client_confirmation)."
            },
            "channel_labels": {
              "type": "object",
              "description": "Localised {channel} values for email, phone and email_or_phone."
            }
          }
        },
        "instructions": {
          "type": [
            "string",
            "array"
          ],
          "items": {
            "type": "string"
          },
          "description": "Numbered steps to follow."
        },
        "on_error": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Error code to action."
        },
        "no_post_tool": {
          "type": "string"
        }
      }
    },
    "data": {
      "type": "object",
      "required": [
        "authority",
        "dataset_version",
        "manifest_url",
        "limitations"
      ],
      "description": "Origin and freshness of the official data; manifest_url lists source files and the last official sync.",
      "properties": {
        "authority": {
          "type": "string"
        },
        "source_url": {
          "type": "string",
          "format": "uri"
        },
        "dataset_version": {
          "type": "string"
        },
        "last_validated_at": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "validation_status": {
          "type": "string"
        },
        "manifest_url": {
          "type": "string",
          "format": "uri"
        },
        "limitations": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "pricing": {
      "type": "object",
      "properties": {
        "currency": {
          "const": "CHF"
        },
        "period": {
          "const": "month"
        },
        "environmental_rebate_treatment": {
          "type": "string"
        },
        "environmental_credit_monthly_cents": {
          "type": "integer",
          "minimum": 0
        }
      }
    },
    "eligible_insurer_count": {
      "type": "integer"
    },
    "results_url": {
      "type": [
        "string",
        "null"
      ],
      "format": "uri",
      "description": "HTML results page to share with the client; no token."
    },
    "adviser_url": {
      "type": [
        "string",
        "null"
      ],
      "format": "uri",
      "description": "Page where the client submits alone; null when the form is disabled."
    },
    "request_url": {
      "type": [
        "string",
        "null"
      ],
      "format": "uri",
      "description": "Short readable form link built from the criteria (/adviser?premium_year=…&postal_code=…); append &agent=<your name>, optionally &insurer_id=. No contact data. null when the form is disabled."
    },
    "switching": {
      "type": "object",
      "required": [
        "deadline",
        "effective",
        "client_sentence"
      ],
      "description": "Switching deadline and free SPI help (cancellation, premium subsidies). Say client_sentence with the offers; a request to SPI cancels nothing by itself.",
      "properties": {
        "deadline": {
          "type": "string",
          "format": "date",
          "const": "2026-11-30",
          "description": "Date by which the cancellation must REACH the current insurer."
        },
        "effective": {
          "type": "string",
          "format": "date",
          "const": "2027-01-01"
        },
        "deadline_rule": {
          "type": "string"
        },
        "request_cancels_current_insurance": {
          "const": false
        },
        "cancellation_help": {
          "type": "string"
        },
        "subsidy_help": {
          "type": "string"
        },
        "client_sentence": {
          "type": "object",
          "properties": {
            "fr": {
              "type": "string"
            },
            "de": {
              "type": "string"
            },
            "it": {
              "type": "string"
            },
            "en": {
              "type": "string"
            }
          },
          "description": "Deadline, free cancellation help and free subsidy help; requested language only unless texts=all."
        },
        "subsidy_sentence": {
          "type": "object",
          "properties": {
            "fr": {
              "type": "string"
            },
            "de": {
              "type": "string"
            },
            "it": {
              "type": "string"
            },
            "en": {
              "type": "string"
            }
          },
          "description": "Say it when the client mentions a modest income or asks about premium subsidies."
        },
        "instructions": {
          "type": "string"
        }
      }
    },
    "accident_question": {
      "type": "object",
      "description": "Ask before quoting: employees working at least 8 hours a week for the same employer usually exclude accident cover (accident_included false).",
      "properties": {
        "ask_before_quoting": {
          "const": true
        },
        "rule": {
          "type": "string"
        },
        "question": {
          "type": "object",
          "properties": {
            "fr": {
              "type": "string"
            },
            "de": {
              "type": "string"
            },
            "it": {
              "type": "string"
            },
            "en": {
              "type": "string"
            }
          }
        }
      }
    },
    "link_expires_at": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time"
    },
    "operator": {
      "type": "object",
      "properties": {
        "name": {
          "const": "Swiss Premium Insurance"
        },
        "role": {
          "const": "insurance_broker"
        },
        "assistance_is_optional": {
          "const": true
        }
      }
    },
    "response_format": {
      "const": "compact"
    },
    "texts_language": {
      "type": "string",
      "enum": [
        "fr",
        "de",
        "it",
        "en",
        "all"
      ],
      "description": "Language of the client texts in this response."
    },
    "languages_available": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "offers": {
      "type": "array",
      "maxItems": 10,
      "items": {
        "type": "object",
        "required": [
          "rank",
          "offer_id",
          "insurer_id",
          "insurer_name",
          "model_name",
          "model_group",
          "premium_monthly_chf",
          "premium_monthly_net_cents"
        ],
        "properties": {
          "rank": {
            "type": "integer"
          },
          "offer_id": {
            "type": "string"
          },
          "source_offer_id": {
            "type": "string"
          },
          "insurer_id": {
            "type": "integer",
            "description": "Send as insurer_id in submitOfferRequest."
          },
          "insurer_name": {
            "type": "string"
          },
          "model_name": {
            "type": "string",
            "description": "Model name in the requested language (display translation of the official name)."
          },
          "model_name_official": {
            "type": "string",
            "description": "Official French model name from the OFSP file."
          },
          "model_group": {
            "type": "string",
            "enum": [
              "BASE",
              "PRAXIS",
              "FLEX",
              "TEL_DIG",
              "PHARM"
            ]
          },
          "premium_monthly_chf": {
            "type": "number",
            "description": "Net official monthly premium in CHF; quote this value."
          },
          "premium_monthly_gross_cents": {
            "type": "integer",
            "minimum": 0
          },
          "premium_monthly_net_cents": {
            "type": "integer",
            "minimum": 0
          },
          "deductible_chf": {
            "type": "integer"
          },
          "accident_included": {
            "type": "boolean"
          }
        }
      },
      "description": "Top 10 by net premium, same ranking as assurs.ch."
    },
    "model_groups": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      },
      "description": "First-contact rule per model_group code present in offers."
    },
    "eligible_models": {
      "type": "object",
      "required": [
        "columns",
        "rows"
      ],
      "description": "Every eligible model as a table, same engine and filters as offers; complete coverage, not limited to broker agreements.",
      "properties": {
        "columns": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "const": [
            "insurer_id",
            "insurer_name",
            "model_name",
            "model_group",
            "premium_monthly_chf"
          ]
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "array",
            "items": {
              "type": [
                "integer",
                "number",
                "string"
              ]
            }
          }
        }
      }
    },
    "eligible_model_count": {
      "type": "integer"
    },
    "model_details": {
      "type": "string"
    },
    "full_response_url": {
      "type": "string",
      "format": "uri",
      "description": "Full response for independent verification; no token or contact data."
    }
  },
  "required": [
    "status",
    "result_type",
    "response_format",
    "profile",
    "comparison_id",
    "cashback",
    "switching",
    "submission",
    "offers",
    "eligible_models",
    "eligible_model_count",
    "data",
    "pricing",
    "full_response_url",
    "results_url",
    "operator"
  ]
}
🟢compare_lamal_household(year, members, language, texts)

Household comparison (2-12 people, one insurer for all, household total) with the engine body { year:2027, members:[{ birthYear, postcode, bfs?, franchise, accident:"MIT"|"OHN", careType:"any"|"BASE"|"PRAXIS"|"FLEX"|"TEL_DIG"|"PHARM" }], language? }: bfs only when the postcode spans several communes (the error lists the choices); franchise child 0-600, adult 300-2500; MIT means accident included (ask each adult whether they work at least 8 hours a week for one employer: yes means OHN). The result holds offers[] (household total and people[] with translated model names), comparison_id, submission.request_id, the cashback object per insured person, switching and the household consent question. Present, ask consent_request in the same message, then ONE request_adviser_contact with comparison_id. One person: compare_lamal_premiums.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "year": {
      "type": "integer",
      "const": 2027
    },
    "members": {
      "type": "array",
      "minItems": 2,
      "maxItems": 12,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "birthYear",
          "postcode",
          "franchise",
          "accident",
          "careType"
        ],
        "properties": {
          "birthYear": {
            "type": "integer"
          },
          "postcode": {
            "type": "string",
            "pattern": "^[0-9]{4}$"
          },
          "bfs": {
            "type": "string",
            "description": "Only when the postcode spans several communes; the error lists the choices."
          },
          "franchise": {
            "type": "integer",
            "description": "Child 0-600, adult 300-2500."
          },
          "accident": {
            "enum": [
              "MIT",
              "OHN"
            ],
            "description": "MIT: accident included. Ask each adult whether they work at least 8 hours a week for one employer: yes means OHN."
          },
          "careType": {
            "enum": [
              "any",
              "BASE",
              "PRAXIS",
              "FLEX",
              "TEL_DIG",
              "PHARM"
            ]
          }
        }
      },
      "description": "2-12 insured persons, no names or contact data (one person: prepareLamalQuote)."
    },
    "language": {
      "type": "string",
      "enum": [
        "fr",
        "de",
        "it",
        "en"
      ],
      "default": "fr"
    },
    "texts": {
      "type": "string",
      "enum": [
        "requested",
        "all"
      ],
      "default": "requested"
    }
  },
  "required": [
    "year",
    "members"
  ],
  "additionalProperties": false,
  "title": "Household LAMal comparison"
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "status": {
      "const": "ok"
    },
    "result_type": {
      "const": "non_binding_lamal_household_comparison"
    },
    "response_format": {
      "const": "household"
    },
    "comparison_id": {
      "type": [
        "string",
        "null"
      ],
      "description": "Send as comparison_id in submitOfferRequest."
    },
    "profile": {
      "type": "object",
      "description": "Household criteria: persons, postcode, members[]."
    },
    "persons": {
      "type": "integer"
    },
    "ranking": {
      "type": "string"
    },
    "texts_language": {
      "type": "string"
    },
    "languages_available": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "offers": {
      "type": "array",
      "maxItems": 10,
      "items": {
        "type": "object",
        "properties": {
          "rank": {
            "type": "integer"
          },
          "insurer_id": {
            "type": "integer"
          },
          "insurer_name": {
            "type": "string"
          },
          "premium_monthly_chf": {
            "type": "number",
            "description": "Household total per month."
          },
          "premium_annual_chf": {
            "type": "number"
          },
          "premium_monthly_net_cents": {
            "type": "integer",
            "minimum": 0
          },
          "model_name": {
            "type": "string"
          },
          "people": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "member_index": {
                  "type": "integer"
                },
                "birth_year": {
                  "type": "integer"
                },
                "model_name": {
                  "type": "string"
                },
                "model_name_official": {
                  "type": "string"
                },
                "model_group": {
                  "type": "string"
                },
                "premium_monthly_chf": {
                  "type": "number"
                }
              }
            }
          }
        }
      }
    },
    "eligible_insurer_count": {
      "type": "integer"
    },
    "pricing": {
      "type": "object"
    },
    "data": {
      "type": "object",
      "required": [
        "authority",
        "dataset_version",
        "manifest_url",
        "limitations"
      ],
      "description": "Origin and freshness of the official data; manifest_url lists source files and the last official sync.",
      "properties": {
        "authority": {
          "type": "string"
        },
        "source_url": {
          "type": "string",
          "format": "uri"
        },
        "dataset_version": {
          "type": "string"
        },
        "last_validated_at": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "validation_status": {
          "type": "string"
        },
        "manifest_url": {
          "type": "string",
          "format": "uri"
        },
        "limitations": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "cashback": {
      "type": "object",
      "required": [
        "status"
      ],
      "description": "Premium reduction Swiss Premium Insurance grants to each insured person, only for requests made through an AI assistant, once a contract concluded through SPI is approved by the insurer. Premiums and ranking shown are the official ones, without the reduction.",
      "properties": {
        "status": {
          "enum": [
            "active",
            "disabled"
          ]
        },
        "version": {
          "type": "string",
          "description": "Send back as cashback_terms_version."
        },
        "paid_by": {
          "const": "Swiss Premium Insurance"
        },
        "paid_to": {
          "const": "client"
        },
        "changes_premium": {
          "const": false,
          "description": "The official premium used for the ranking is not altered; the client benefit is the reduction in benefit_form."
        },
        "automatic_payment": {
          "const": false
        },
        "benefit_form": {
          "const": "premium_reduction"
        },
        "per": {
          "const": "insured_person"
        },
        "scope": {
          "const": "agent_originated_requests_only"
        },
        "ranking_uses_official_premium": {
          "const": true
        },
        "lamal": {
          "type": "object",
          "properties": {
            "amount_chf": {
              "type": [
                "number",
                "null"
              ]
            },
            "basis": {
              "type": "string",
              "description": "fixed_chf, per insured person"
            }
          }
        },
        "lca": {
          "type": "object",
          "properties": {
            "amount_chf": {
              "type": [
                "number",
                "null"
              ]
            },
            "basis": {
              "type": "string",
              "description": "one_month_premium per insured person and contract; amount set by SPI after review."
            }
          }
        },
        "trigger": {
          "type": "string"
        },
        "insured_persons": {
          "type": "integer",
          "description": "Household results only: number of insured persons."
        },
        "lamal_total_chf": {
          "type": "number",
          "description": "Household results only: CHF 30 × insured_persons."
        },
        "client_sentence": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "fr": {
                  "type": "string"
                },
                "de": {
                  "type": "string"
                },
                "it": {
                  "type": "string"
                },
                "en": {
                  "type": "string"
                }
              }
            },
            {
              "type": "null"
            }
          ],
          "description": "Say as provided in the client language. Quote: requested language only (texts=all for fr, de, it, en); full premiums route: four languages. null when disabled."
        },
        "rationale": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "fr": {
                  "type": "string"
                },
                "de": {
                  "type": "string"
                },
                "it": {
                  "type": "string"
                },
                "en": {
                  "type": "string"
                }
              }
            },
            {
              "type": "null"
            }
          ],
          "description": "Same languages as client_sentence; null when disabled."
        },
        "terms_url": {
          "type": "string",
          "format": "uri"
        },
        "programs_url": {
          "type": "string",
          "format": "uri"
        },
        "contact": {
          "type": "string"
        }
      }
    },
    "switching": {
      "type": "object",
      "required": [
        "deadline",
        "effective",
        "client_sentence"
      ],
      "description": "Switching deadline and free SPI help (cancellation, premium subsidies). Say client_sentence with the offers; a request to SPI cancels nothing by itself.",
      "properties": {
        "deadline": {
          "type": "string",
          "format": "date",
          "const": "2026-11-30",
          "description": "Date by which the cancellation must REACH the current insurer."
        },
        "effective": {
          "type": "string",
          "format": "date",
          "const": "2027-01-01"
        },
        "deadline_rule": {
          "type": "string"
        },
        "request_cancels_current_insurance": {
          "const": false
        },
        "cancellation_help": {
          "type": "string"
        },
        "subsidy_help": {
          "type": "string"
        },
        "client_sentence": {
          "type": "object",
          "properties": {
            "fr": {
              "type": "string"
            },
            "de": {
              "type": "string"
            },
            "it": {
              "type": "string"
            },
            "en": {
              "type": "string"
            }
          },
          "description": "Deadline, free cancellation help and free subsidy help; requested language only unless texts=all."
        },
        "subsidy_sentence": {
          "type": "object",
          "properties": {
            "fr": {
              "type": "string"
            },
            "de": {
              "type": "string"
            },
            "it": {
              "type": "string"
            },
            "en": {
              "type": "string"
            }
          },
          "description": "Say it when the client mentions a modest income or asks about premium subsidies."
        },
        "instructions": {
          "type": "string"
        }
      }
    },
    "accident_question": {
      "type": "object",
      "description": "Ask before quoting: employees working at least 8 hours a week for the same employer usually exclude accident cover (accident_included false).",
      "properties": {
        "ask_before_quoting": {
          "const": true
        },
        "rule": {
          "type": "string"
        },
        "question": {
          "type": "object",
          "properties": {
            "fr": {
              "type": "string"
            },
            "de": {
              "type": "string"
            },
            "it": {
              "type": "string"
            },
            "en": {
              "type": "string"
            }
          }
        }
      }
    },
    "submission": {
      "type": "object",
      "description": "How to send the client-approved request. Keep comparisonToken private; never put it in a link.",
      "properties": {
        "endpoint": {
          "type": "string",
          "format": "uri",
          "description": "POST target of submitOfferRequest."
        },
        "test_endpoint": {
          "type": "string",
          "format": "uri"
        },
        "testEndpoint": {
          "type": "string",
          "format": "uri",
          "deprecated": true,
          "description": "Alias of test_endpoint."
        },
        "method": {
          "const": "POST"
        },
        "content_type": {
          "const": "application/json"
        },
        "enabled": {
          "type": "boolean",
          "description": "false: sending is disabled; offer adviser_url instead."
        },
        "request_id": {
          "type": "string",
          "format": "uuid",
          "description": "Fresh per response; copy it as request_id of the submission."
        },
        "comparison_id": {
          "type": [
            "string",
            "null"
          ]
        },
        "comparison": {
          "type": "object",
          "description": "Legacy criteria; copy unchanged with comparisonToken when comparison_id is unavailable."
        },
        "comparisonToken": {
          "type": "string"
        },
        "token_valid_until": {
          "type": "string",
          "format": "date-time",
          "description": "comparison_token lifetime (24 h)."
        },
        "comparison_id_valid_until": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time",
          "description": "comparison_id lifetime (30 days); results_url and adviser_url follow it. Prefer comparison_id over the token."
        },
        "expiresAt": {
          "type": "string",
          "format": "date-time",
          "deprecated": true,
          "description": "Alias of token_valid_until."
        },
        "clientConsentRequired": {
          "const": true
        },
        "request_template": {
          "type": "object",
          "description": "submitOfferRequest body to fill; contact.email and contact.phone are empty strings: fill the ones you have."
        },
        "client_messages": {
          "type": "object",
          "description": "Quote and household: requested language only (texts=all for fr, de, it, en); full premiums route: four languages.",
          "properties": {
            "consent_request": {
              "type": "object",
              "properties": {
                "fr": {
                  "type": "string"
                },
                "de": {
                  "type": "string"
                },
                "it": {
                  "type": "string"
                },
                "en": {
                  "type": "string"
                }
              },
              "description": "Ask this once, in the same message as the offers, filling {insurer}, {model} and {premium} (household: {insurer}, {persons}, {premium} total); a reply giving an email or phone is the consent."
            },
            "consent_confirmation": {
              "type": "object",
              "properties": {
                "fr": {
                  "type": "string"
                },
                "de": {
                  "type": "string"
                },
                "it": {
                  "type": "string"
                },
                "en": {
                  "type": "string"
                }
              },
              "description": "Fill {request_id} and {channel}; it says the request cancels nothing, the 30 November deadline and the free SPI help. The receipt also returns it filled (client_confirmation)."
            },
            "channel_labels": {
              "type": "object",
              "description": "Localised {channel} values for email, phone and email_or_phone."
            }
          }
        },
        "instructions": {
          "type": [
            "string",
            "array"
          ],
          "items": {
            "type": "string"
          },
          "description": "Numbered steps to follow."
        },
        "on_error": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Error code to action."
        },
        "no_post_tool": {
          "type": "string"
        }
      }
    },
    "results_url": {
      "type": [
        "string",
        "null"
      ],
      "format": "uri"
    },
    "readable_url": {
      "type": [
        "string",
        "null"
      ],
      "format": "uri",
      "description": "Readable GET household page (/compare-household?…) for browsing tools."
    },
    "adviser_url": {
      "type": [
        "string",
        "null"
      ],
      "format": "uri"
    },
    "link_expires_at": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time"
    },
    "operator": {
      "type": "object",
      "properties": {
        "name": {
          "const": "Swiss Premium Insurance"
        },
        "role": {
          "const": "insurance_broker"
        },
        "assistance_is_optional": {
          "const": true
        }
      }
    }
  },
  "required": [
    "status",
    "response_format",
    "comparison_id",
    "profile",
    "offers",
    "cashback",
    "switching",
    "submission"
  ],
  "description": "Household comparison with everything needed to present, ask consent and send."
}
🟢get_lamal_metadata

Read supported years, model categories, deductibles, source freshness, exclusions and contact availability. No lead is created.

Eingabe-Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "api_version": {
      "type": "string"
    },
    "supported_years": {
      "type": "array",
      "items": {
        "type": "integer"
      }
    },
    "data": {
      "type": "object",
      "required": [
        "authority",
        "dataset_version",
        "manifest_url",
        "limitations"
      ],
      "description": "Origin and freshness of the official data; manifest_url lists source files and the last official sync.",
      "properties": {
        "authority": {
          "type": "string"
        },
        "source_url": {
          "type": "string",
          "format": "uri"
        },
        "dataset_version": {
          "type": "string"
        },
        "last_validated_at": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "validation_status": {
          "type": "string"
        },
        "manifest_url": {
          "type": "string",
          "format": "uri"
        },
        "limitations": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "deductibles_chf": {
      "type": "object",
      "description": "Accepted deductibles for child and adult."
    },
    "models": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      },
      "description": "model_group codes and their meaning."
    },
    "operator": {
      "type": "object",
      "properties": {
        "name": {
          "const": "Swiss Premium Insurance"
        },
        "role": {
          "const": "insurance_broker"
        },
        "assistance_is_optional": {
          "const": true
        }
      }
    },
    "switching": {
      "type": "object",
      "required": [
        "deadline",
        "effective",
        "client_sentence"
      ],
      "description": "Switching deadline and free SPI help (cancellation, premium subsidies). Say client_sentence with the offers; a request to SPI cancels nothing by itself.",
      "properties": {
        "deadline": {
          "type": "string",
          "format": "date",
          "const": "2026-11-30",
          "description": "Date by which the cancellation must REACH the current insurer."
        },
        "effective": {
          "type": "string",
          "format": "date",
          "const": "2027-01-01"
        },
        "deadline_rule": {
          "type": "string"
        },
        "request_cancels_current_insurance": {
          "const": false
        },
        "cancellation_help": {
          "type": "string"
        },
        "subsidy_help": {
          "type": "string"
        },
        "client_sentence": {
          "type": "object",
          "properties": {
            "fr": {
              "type": "string"
            },
            "de": {
              "type": "string"
            },
            "it": {
              "type": "string"
            },
            "en": {
              "type": "string"
            }
          },
          "description": "Deadline, free cancellation help and free subsidy help; requested language only unless texts=all."
        },
        "subsidy_sentence": {
          "type": "object",
          "properties": {
            "fr": {
              "type": "string"
            },
            "de": {
              "type": "string"
            },
            "it": {
              "type": "string"
            },
            "en": {
              "type": "string"
            }
          },
          "description": "Say it when the client mentions a modest income or asks about premium subsidies."
        },
        "instructions": {
          "type": "string"
        }
      }
    },
    "accident_question": {
      "type": "object",
      "description": "Ask before quoting: employees working at least 8 hours a week for the same employer usually exclude accident cover (accident_included false).",
      "properties": {
        "ask_before_quoting": {
          "const": true
        },
        "rule": {
          "type": "string"
        },
        "question": {
          "type": "object",
          "properties": {
            "fr": {
              "type": "string"
            },
            "de": {
              "type": "string"
            },
            "it": {
              "type": "string"
            },
            "en": {
              "type": "string"
            }
          }
        }
      }
    },
    "contact_action": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "requires_integration_key": {
          "type": "boolean"
        },
        "client_consent_required": {
          "const": true
        },
        "submit_endpoint": {
          "type": "string",
          "format": "uri"
        },
        "test_endpoint": {
          "type": "string",
          "format": "uri"
        },
        "handoff_form_enabled": {
          "type": "boolean"
        },
        "token_lifetime_hours": {
          "type": "integer"
        },
        "request_id_policy": {
          "type": "string"
        }
      }
    },
    "operations": {
      "type": "object",
      "additionalProperties": {
        "type": "string",
        "description": "Absolute URL; rewards_terms is a URI template with {program_id}."
      },
      "description": "URL of every operation and document."
    }
  }
}
🟢get_active_customer_rewards

Read the published cashback programme of Swiss Premium Insurance: status, version, scope, beneficiary, trigger, conditions and terms links. It is a premium reduction SPI grants to each insured person, only for requests made through an AI assistant, once a contract concluded through SPI is approved by the insurer; never anything for an AI agent. No lead is created and this API creates no payment.

Eingabe-Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "status": {
      "enum": [
        "disabled",
        "active"
      ]
    },
    "programs": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "program_id",
          "version",
          "status",
          "product_line",
          "payer",
          "basis",
          "amount_chf",
          "trigger",
          "conditions",
          "terms_url",
          "approval"
        ],
        "properties": {
          "program_id": {
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "status": {
            "const": "active"
          },
          "product_line": {
            "enum": [
              "LAMAL",
              "LCA"
            ]
          },
          "payer": {
            "const": "Swiss Premium Insurance"
          },
          "currency": {
            "const": "CHF"
          },
          "basis": {
            "enum": [
              "fixed_chf",
              "one_month_equivalent"
            ]
          },
          "amount_chf": {
            "type": [
              "number",
              "null"
            ]
          },
          "amount_determination": {
            "type": "string"
          },
          "trigger": {
            "const": "contract_concluded_and_insurer_approved"
          },
          "conditions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "client_summary": {
            "type": "object",
            "properties": {
              "fr": {
                "type": "string"
              },
              "de": {
                "type": "string"
              },
              "it": {
                "type": "string"
              },
              "en": {
                "type": "string"
              }
            }
          },
          "rationale": {
            "type": "object",
            "properties": {
              "fr": {
                "type": "string"
              },
              "de": {
                "type": "string"
              },
              "it": {
                "type": "string"
              },
              "en": {
                "type": "string"
              }
            }
          },
          "valid_from": {
            "type": "string"
          },
          "valid_until": {
            "type": [
              "string",
              "null"
            ]
          },
          "how_to_request": {
            "type": "string"
          },
          "changes_insurer_premium": {
            "const": false
          },
          "automatic_payment": {
            "const": false
          },
          "approval": {
            "type": "object",
            "description": "Programme published and paid by Swiss Premium Insurance Sàrl; SPI confirms each concluded contract with the insurer."
          },
          "terms_url": {
            "type": "string",
            "format": "uri"
          },
          "terms_page_url": {
            "type": "string",
            "format": "uri"
          },
          "contact": {
            "type": "string"
          }
        }
      }
    }
  },
  "required": [
    "status",
    "programs"
  ]
}
🟢create_adviser_handoff_link(comparison_id, agent, agentContext)

Return a link when the client prefers to complete a website form, using comparison_id from the comparison. No contact details, lead or email are sent. When the web form is disabled the server answers 503 adviser_unavailable: offer [email protected] instead. For a client who asks you to send the request in this conversation, use request_adviser_contact after explicit consent instead. Swiss Premium Insurance assistance is optional; clients may apply directly with insurers.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "comparison_id": {
      "type": "string"
    },
    "agent": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_ -]{1,40}$",
          "description": "Agent name, lower-cased by the server (spaces become _; a literal <placeholder> counts as other). Known names: chatgpt, claude, gemini, grok, openclaw, muse, codex, claude_code, copilot, perplexity, mistral, coding_agent, other; any other short identifier is accepted."
        },
        "kind": {
          "type": "string",
          "enum": [
            "personal_assistant",
            "conversational_assistant",
            "coding_agent"
          ],
          "description": "Optional. Accepted values: personal_assistant, conversational_assistant, coding_agent (personal_agent and chat_assistant are read as personal_assistant and conversational_assistant)."
        },
        "display_name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 80,
          "description": "Optional custom agent name, no client name or conversation content."
        },
        "displayName": {
          "type": "string",
          "minLength": 1,
          "maxLength": 80,
          "description": "Optional custom agent name, no client name or conversation content."
        },
        "integration_id": {
          "type": "string",
          "pattern": "^[a-zA-Z0-9._-]{1,80}$",
          "description": "Self-declared integration identifier, NOT authentication."
        },
        "integrationId": {
          "type": "string",
          "pattern": "^[a-zA-Z0-9._-]{1,80}$",
          "description": "Self-declared integration identifier, NOT authentication."
        },
        "cashback_requested": {
          "type": "boolean",
          "default": true,
          "description": "Records a request for SPI to consider a benefit. Not a claim, eligibility, approval, amount or payment promise. Does not change prices or ranking."
        },
        "cashbackRequested": {
          "type": "boolean",
          "default": true,
          "description": "Records a request for SPI to consider a benefit. Not a claim, eligibility, approval, amount or payment promise. Does not change prices or ranking."
        }
      }
    },
    "agentContext": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_ -]{1,40}$",
          "description": "Agent name, lower-cased by the server (spaces become _; a literal <placeholder> counts as other). Known names: chatgpt, claude, gemini, grok, openclaw, muse, codex, claude_code, copilot, perplexity, mistral, coding_agent, other; any other short identifier is accepted."
        },
        "kind": {
          "type": "string",
          "enum": [
            "personal_assistant",
            "conversational_assistant",
            "coding_agent"
          ],
          "description": "Optional. Accepted values: personal_assistant, conversational_assistant, coding_agent (personal_agent and chat_assistant are read as personal_assistant and conversational_assistant)."
        },
        "display_name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 80,
          "description": "Optional custom agent name, no client name or conversation content."
        },
        "displayName": {
          "type": "string",
          "minLength": 1,
          "maxLength": 80,
          "description": "Optional custom agent name, no client name or conversation content."
        },
        "integration_id": {
          "type": "string",
          "pattern": "^[a-zA-Z0-9._-]{1,80}$",
          "description": "Self-declared integration identifier, NOT authentication."
        },
        "integrationId": {
          "type": "string",
          "pattern": "^[a-zA-Z0-9._-]{1,80}$",
          "description": "Self-declared integration identifier, NOT authentication."
        },
        "cashback_requested": {
          "type": "boolean",
          "default": true,
          "description": "Records a request for SPI to consider a benefit. Not a claim, eligibility, approval, amount or payment promise. Does not change prices or ranking."
        },
        "cashbackRequested": {
          "type": "boolean",
          "default": true,
          "description": "Records a request for SPI to consider a benefit. Not a claim, eligibility, approval, amount or payment promise. Does not change prices or ranking."
        }
      },
      "deprecated": true,
      "description": "Deprecated alias of agent; not with agent."
    }
  },
  "required": [
    "comparison_id"
  ],
  "additionalProperties": false
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "status": {
      "const": "ready"
    },
    "handoff_url": {
      "type": "string",
      "format": "uri"
    },
    "expires_at": {
      "type": "string",
      "format": "date-time"
    },
    "submits_lead": {
      "const": false
    },
    "transmits_contact_data": {
      "const": false
    }
  },
  "required": [
    "handoff_url",
    "submits_lead",
    "transmits_contact_data"
  ]
}
🟢test_adviser_request(request_id, comparison_id, comparison, comparison_token, insurer_id, ...)

Harmless integration test with the same body as request_adviser_contact: validates the request and returns a preview with status validated_test and email_sent false. Use synthetic contact details only. No commercial lead, email, entitlement or payment. Never describe this as a real submission.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "request_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
      "description": "Copy submission.request_id from the quote (any RFC 4122 UUID). Reuse the same value and body on every retry."
    },
    "comparison_id": {
      "type": "string",
      "description": "comparison_id from the quote; valid 30 days. Preferred."
    },
    "comparison": {
      "type": "object",
      "description": "submission.comparison copied unchanged; only with comparison_token."
    },
    "comparison_token": {
      "type": "string",
      "maxLength": 1000,
      "description": "submission.comparisonToken with the identical submission.comparison; alternative to comparison_id."
    },
    "insurer_id": {
      "type": [
        "integer",
        "string"
      ],
      "description": "insurer_id of the offer the client chose, from offers[]."
    },
    "offer_id": {
      "type": "string",
      "description": "offers[].offer_id or source_offer_id; alternative to insurer_id."
    },
    "language": {
      "type": "string",
      "enum": [
        "fr",
        "de",
        "it",
        "en",
        "es",
        "pt",
        "zh"
      ],
      "description": "Client language; defaults to the comparison language. fr, de, it, en have localised client texts and pages; es, pt, zh are recorded for SPI (preview and pages fall back to en/fr)."
    },
    "contact": {
      "type": "object",
      "additionalProperties": false,
      "anyOf": [
        {
          "required": [
            "email"
          ]
        },
        {
          "required": [
            "phone"
          ]
        }
      ],
      "description": "Fill email or phone; leave the other as an empty string or omit it. Never invent a client name, email or phone.",
      "properties": {
        "name": {
          "type": "string",
          "minLength": 0,
          "maxLength": 120
        },
        "email": {
          "type": "string",
          "maxLength": 160,
          "description": "Client email such as [email protected]; an empty string or an omitted key means the client gave a phone instead."
        },
        "phone": {
          "type": "string",
          "maxLength": 30,
          "description": "Client telephone, 8-15 digits, optional spaces and + country code; an empty string or an omitted key means the client gave an email instead."
        },
        "message": {
          "type": "string",
          "minLength": 0,
          "maxLength": 1500
        }
      }
    },
    "client_consent": {
      "type": "boolean",
      "const": true,
      "description": "true only after the client explicitly answered yes to consent_request. Never infer consent from a comparison."
    },
    "subsidy_requested": {
      "type": "boolean",
      "default": false,
      "description": "Client wants information on premium subsidies."
    },
    "supplementary_interest": {
      "type": "boolean",
      "default": false,
      "description": "Client also wants supplementary (LCA) offers; enables the LCA cashback."
    },
    "agent": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_ -]{1,40}$",
          "description": "Agent name, lower-cased by the server (spaces become _; a literal <placeholder> counts as other). Known names: chatgpt, claude, gemini, grok, openclaw, muse, codex, claude_code, copilot, perplexity, mistral, coding_agent, other; any other short identifier is accepted."
        },
        "kind": {
          "type": "string",
          "enum": [
            "personal_assistant",
            "conversational_assistant",
            "coding_agent"
          ],
          "description": "Optional. Accepted values: personal_assistant, conversational_assistant, coding_agent (personal_agent and chat_assistant are read as personal_assistant and conversational_assistant)."
        },
        "display_name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 80,
          "description": "Optional custom agent name, no client name or conversation content."
        },
        "displayName": {
          "type": "string",
          "minLength": 1,
          "maxLength": 80,
          "description": "Optional custom agent name, no client name or conversation content."
        },
        "integration_id": {
          "type": "string",
          "pattern": "^[a-zA-Z0-9._-]{1,80}$",
          "description": "Self-declared integration identifier, NOT authentication."
        },
        "integrationId": {
          "type": "string",
          "pattern": "^[a-zA-Z0-9._-]{1,80}$",
          "description": "Self-declared integration identifier, NOT authentication."
        },
        "cashback_requested": {
          "type": "boolean",
          "default": true,
          "description": "Records a request for SPI to consider a benefit. Not a claim, eligibility, approval, amount or payment promise. Does not change prices or ranking."
        },
        "cashbackRequested": {
          "type": "boolean",
          "default": true,
          "description": "Records a request for SPI to consider a benefit. Not a claim, eligibility, approval, amount or payment promise. Does not change prices or ranking."
        }
      },
      "description": "Who is calling: { name:\"chatgpt\" } etc. Self-declared, not authentication."
    },
    "cashback_terms_version": {
      "type": "string",
      "description": "cashback.version shown to the client; 409 cashback_terms_outdated when stale."
    }
  },
  "required": [
    "request_id",
    "contact",
    "client_consent"
  ],
  "additionalProperties": false,
  "anyOf": [
    {
      "required": [
        "comparison_id"
      ]
    },
    {
      "required": [
        "comparison",
        "comparison_token"
      ]
    }
  ],
  "description": "Send exactly one of comparison_id or comparison + comparison_token. Copy request_id, comparison_id and insurer_id from the quote."
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "status": {
      "const": "validated_test"
    },
    "request_id": {
      "type": "string",
      "format": "uuid"
    },
    "email_sent": {
      "const": false
    },
    "payment_created": {
      "const": false
    },
    "recipient": {
      "const": "[email protected]"
    },
    "preview": {
      "type": "object",
      "description": "What a real send would contain.",
      "properties": {
        "insurer_name": {
          "type": "string"
        },
        "model_name": {
          "type": "string"
        },
        "model_name_official": {
          "type": "string"
        },
        "premium_monthly_chf": {
          "type": "number",
          "description": "Monthly premium; for a household the household total."
        },
        "members_count": {
          "type": "integer"
        },
        "household_monthly_chf": {
          "type": "number"
        },
        "people": {
          "type": "array",
          "items": {
            "type": "object"
          },
          "description": "Household only: each member with model and monthly premium."
        },
        "criteria_summary": {
          "type": "string"
        },
        "contact_fields": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "language": {
          "type": "string"
        },
        "cashback_line": {
          "type": [
            "string",
            "null"
          ]
        },
        "consent_statement": {
          "type": "string"
        },
        "consent_confirmation": {
          "type": "string",
          "description": "The confirmation a real send returns, filled."
        }
      }
    }
  },
  "required": [
    "status",
    "request_id",
    "email_sent",
    "payment_created",
    "recipient",
    "preview"
  ]
}
🔴request_adviser_contact(request_id, comparison_id, comparison, comparison_token, insurer_id, ...)

Sends the client request by email to [email protected] through the server; no personal email account or mail tool is needed. Use once the client has answered the consent_request question with a yes or with their email or phone: that answer is the consent, and the platform approval for this tool completes it. Copy request_id and comparison_id from submission of compare_lamal_premiums and insurer_id from offers[]; reuse the same request_id and body on retries. Report the returned status and request_id: accepted means the email provider accepted the request for delivery to Swiss Premium Insurance, not inbox delivery, not that SPI has read it, not a contract. A draft or test is not a real send, and the request does not cancel the current insurance. The premium reduction applies only if the contract is concluded through SPI and approved by the insurer; never promise it.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "request_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
      "description": "Copy submission.request_id from the quote (any RFC 4122 UUID). Reuse the same value and body on every retry."
    },
    "comparison_id": {
      "type": "string",
      "description": "comparison_id from the quote; valid 30 days. Preferred."
    },
    "comparison": {
      "type": "object",
      "description": "submission.comparison copied unchanged; only with comparison_token."
    },
    "comparison_token": {
      "type": "string",
      "maxLength": 1000,
      "description": "submission.comparisonToken with the identical submission.comparison; alternative to comparison_id."
    },
    "insurer_id": {
      "type": [
        "integer",
        "string"
      ],
      "description": "insurer_id of the offer the client chose, from offers[]."
    },
    "offer_id": {
      "type": "string",
      "description": "offers[].offer_id or source_offer_id; alternative to insurer_id."
    },
    "language": {
      "type": "string",
      "enum": [
        "fr",
        "de",
        "it",
        "en",
        "es",
        "pt",
        "zh"
      ],
      "description": "Client language; defaults to the comparison language. fr, de, it, en have localised client texts and pages; es, pt, zh are recorded for SPI (preview and pages fall back to en/fr)."
    },
    "contact": {
      "type": "object",
      "additionalProperties": false,
      "anyOf": [
        {
          "required": [
            "email"
          ]
        },
        {
          "required": [
            "phone"
          ]
        }
      ],
      "description": "Fill email or phone; leave the other as an empty string or omit it. Never invent a client name, email or phone.",
      "properties": {
        "name": {
          "type": "string",
          "minLength": 0,
          "maxLength": 120
        },
        "email": {
          "type": "string",
          "maxLength": 160,
          "description": "Client email such as [email protected]; an empty string or an omitted key means the client gave a phone instead."
        },
        "phone": {
          "type": "string",
          "maxLength": 30,
          "description": "Client telephone, 8-15 digits, optional spaces and + country code; an empty string or an omitted key means the client gave an email instead."
        },
        "message": {
          "type": "string",
          "minLength": 0,
          "maxLength": 1500
        }
      }
    },
    "client_consent": {
      "type": "boolean",
      "const": true,
      "description": "true only after the client explicitly answered yes to consent_request. Never infer consent from a comparison."
    },
    "subsidy_requested": {
      "type": "boolean",
      "default": false,
      "description": "Client wants information on premium subsidies."
    },
    "supplementary_interest": {
      "type": "boolean",
      "default": false,
      "description": "Client also wants supplementary (LCA) offers; enables the LCA cashback."
    },
    "agent": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_ -]{1,40}$",
          "description": "Agent name, lower-cased by the server (spaces become _; a literal <placeholder> counts as other). Known names: chatgpt, claude, gemini, grok, openclaw, muse, codex, claude_code, copilot, perplexity, mistral, coding_agent, other; any other short identifier is accepted."
        },
        "kind": {
          "type": "string",
          "enum": [
            "personal_assistant",
            "conversational_assistant",
            "coding_agent"
          ],
          "description": "Optional. Accepted values: personal_assistant, conversational_assistant, coding_agent (personal_agent and chat_assistant are read as personal_assistant and conversational_assistant)."
        },
        "display_name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 80,
          "description": "Optional custom agent name, no client name or conversation content."
        },
        "displayName": {
          "type": "string",
          "minLength": 1,
          "maxLength": 80,
          "description": "Optional custom agent name, no client name or conversation content."
        },
        "integration_id": {
          "type": "string",
          "pattern": "^[a-zA-Z0-9._-]{1,80}$",
          "description": "Self-declared integration identifier, NOT authentication."
        },
        "integrationId": {
          "type": "string",
          "pattern": "^[a-zA-Z0-9._-]{1,80}$",
          "description": "Self-declared integration identifier, NOT authentication."
        },
        "cashback_requested": {
          "type": "boolean",
          "default": true,
          "description": "Records a request for SPI to consider a benefit. Not a claim, eligibility, approval, amount or payment promise. Does not change prices or ranking."
        },
        "cashbackRequested": {
          "type": "boolean",
          "default": true,
          "description": "Records a request for SPI to consider a benefit. Not a claim, eligibility, approval, amount or payment promise. Does not change prices or ranking."
        }
      },
      "description": "Who is calling: { name:\"chatgpt\" } etc. Self-declared, not authentication."
    },
    "cashback_terms_version": {
      "type": "string",
      "description": "cashback.version shown to the client; 409 cashback_terms_outdated when stale."
    }
  },
  "required": [
    "request_id",
    "contact",
    "client_consent"
  ],
  "additionalProperties": false,
  "anyOf": [
    {
      "required": [
        "comparison_id"
      ]
    },
    {
      "required": [
        "comparison",
        "comparison_token"
      ]
    }
  ],
  "description": "Send exactly one of comparison_id or comparison + comparison_token. Copy request_id, comparison_id and insurer_id from the quote."
}

Ausgabe-Schema

{
  "type": "object",
  "properties": {
    "status": {
      "const": "accepted"
    },
    "request_id": {
      "type": "string",
      "format": "uuid"
    },
    "email_sent": {
      "const": true,
      "description": "Provider acceptance; not inbox delivery or a contract."
    },
    "recipient": {
      "const": "[email protected]"
    },
    "accepted_at": {
      "type": "string",
      "format": "date-time"
    },
    "follow_up_by": {
      "const": "Swiss Premium Insurance"
    },
    "expected_contact_channel": {
      "type": "string",
      "enum": [
        "email",
        "phone",
        "email_or_phone"
      ]
    },
    "expected_contact_channel_label": {
      "type": "string",
      "description": "expected_contact_channel in the client language."
    },
    "cashback": {
      "type": "object",
      "properties": {
        "program_status": {
          "enum": [
            "active",
            "disabled"
          ]
        },
        "program_version": {
          "type": "string"
        },
        "requested": {
          "type": "boolean"
        },
        "lamal_amount_chf": {
          "type": [
            "number",
            "null"
          ]
        },
        "lca_basis": {
          "type": [
            "string",
            "null"
          ]
        },
        "contract_status": {
          "const": "not_verified"
        },
        "payment_created": {
          "const": false
        },
        "terms_url": {
          "type": "string",
          "format": "uri"
        },
        "next_steps": {
          "type": "string",
          "description": "Tell the client this."
        }
      }
    },
    "correction_or_cancellation": {
      "type": "string",
      "format": "uri",
      "description": "mailto link to correct or withdraw; give it to the client."
    },
    "client_confirmation": {
      "type": "string",
      "description": "consent_confirmation filled in the client language; say it to the client."
    },
    "switching": {
      "type": "object",
      "required": [
        "deadline",
        "effective",
        "client_sentence"
      ],
      "description": "Switching deadline and free SPI help (cancellation, premium subsidies). Say client_sentence with the offers; a request to SPI cancels nothing by itself.",
      "properties": {
        "deadline": {
          "type": "string",
          "format": "date",
          "const": "2026-11-30",
          "description": "Date by which the cancellation must REACH the current insurer."
        },
        "effective": {
          "type": "string",
          "format": "date",
          "const": "2027-01-01"
        },
        "deadline_rule": {
          "type": "string"
        },
        "request_cancels_current_insurance": {
          "const": false
        },
        "cancellation_help": {
          "type": "string"
        },
        "subsidy_help": {
          "type": "string"
        },
        "client_sentence": {
          "type": "object",
          "properties": {
            "fr": {
              "type": "string"
            },
            "de": {
              "type": "string"
            },
            "it": {
              "type": "string"
            },
            "en": {
              "type": "string"
            }
          },
          "description": "Deadline, free cancellation help and free subsidy help; requested language only unless texts=all."
        },
        "subsidy_sentence": {
          "type": "object",
          "properties": {
            "fr": {
              "type": "string"
            },
            "de": {
              "type": "string"
            },
            "it": {
              "type": "string"
            },
            "en": {
              "type": "string"
            }
          },
          "description": "Say it when the client mentions a modest income or asks about premium subsidies."
        },
        "instructions": {
          "type": "string"
        }
      }
    },
    "message": {
      "type": "string"
    }
  },
  "required": [
    "status",
    "request_id",
    "email_sent",
    "recipient",
    "accepted_at",
    "follow_up_by",
    "message"
  ]
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet7 Tools