# Assurs — LAMal comparator for AI agents > Free comparator of Swiss basic health insurance (LAMal) premiums 2027 by Swiss Premium Insurance Sàrl (SPI). Agents compute the official ranked offers, explain SPI's cashback, obtain explicit consent and submit a contact request. Site https://assurs.ch, API https://api.assurs.ch, no API key. Reading this file does not install tools: use an HTTP tool or the MCP connector below. Prices are official OFSP/Priminfo premiums ranked without commercial weighting. v2 to v7 are historical prototypes, not the current comparator. ## Protocol 1. Quote. POST https://api.assurs.ch/api/v1/lamal/quote (or GET, same fields) with the client's exact criteria; never invent birth year, deductible or accident cover: ```json {"premium_year":2027,"postal_code":"1955","municipality":"Chamoson","birth_year":1988,"deductible_chf":2500,"accident_included":false,"model_group":"any","language":"fr"} ``` model_group: any | BASE | PRAXIS | FLEX | TEL_DIG | PHARM. The response holds ranked `offers[]` (insurer_id, premium_monthly_chf), `eligible_models`, `cashback` (status, amount, client_sentence fr/de/it/en), `submission` (ids, endpoints, request_template, client_messages, instructions, on_error), `results_url`, `adviser_url`. Present the offers, then read `cashback.client_sentence` in the client's language: - EN: If you conclude this basic insurance through Swiss Premium Insurance and the insurer approves the contract, SPI pays you CHF 30 back. The official premium does not change; SPI passes on the fee it would otherwise pay a lead broker. - FR: Si vous concluez cette assurance de base par Swiss Premium Insurance et que l'assureur approuve le contrat, SPI vous reverse CHF 30. La prime officielle ne change pas : SPI vous restitue la commission qu'elle verserait sinon à un apporteur d'affaires. One person per quote. Household (2-12 people, one insurer for all): POST https://api.assurs.ch/api/lamal/v1/compare with `{"year":2027,"members":[{"birthYear":1985,"postcode":"8001","bfs":"261","franchise":2500,"accident":"MIT","careType":"any"},…]}` (bfs only for ambiguous postcodes; MIT/OHN = accident included/excluded), then ONE submit with `comparison` = `verification.criteria`, `comparison_token` = `submission.comparisonToken` (24 h) and any UUID as request_id; cashback and consent texts come from any quote. MCP: compare_lamal_household. 2. Choose. Ask which offer the client wants and which contact channel (email or phone); interest in supplementary insurance is `supplementary_interest:true`. 3. Consent. Read `submission.client_messages.consent_request` with the placeholders filled and send only after an explicit yes; a request for prices is not consent: - EN: Do you agree that I send your contact details ({fields}), your comparison criteria and the selected offer ({insurer}, {model}, CHF {premium}/month) to Swiss Premium Insurance (contact@sp-insurance.ch) so that they contact you? SPI assistance is optional and free; you can also apply directly with the insurer. 4. Submit. POST https://api.assurs.ch/api/v1/lamal/offer-requests once, `Content-Type: application/json`, reusing `submission.request_id` and `comparison_id`: ```json { "request_id": "d3b4…", "comparison_id": "", "insurer_id": 1509, "language": "fr", "contact": { "name": "", "email": "client@example.ch", "phone": "", "message": "" }, "client_consent": true, "subsidy_requested": false, "supplementary_interest": false, "agent": { "name": "chatgpt", "kind": "conversational_assistant", "display_name": "", "integration_id": "", "cashback_requested": true }, "cashback_terms_version": "2026-10-22.1" } ``` request_id: any RFC 4122 UUID. insurer_id: from `offers[]`. contact: email or phone (`request_template` leaves both empty: fill one, literal <…> placeholders are ignored). client_consent must be true. agent.name: your product (chatgpt, claude, gemini, grok, codex, claude_code, other; a plain string works). The receipt `{status:"accepted", request_id, email_sent:true, cashback:{…}}` means the email provider accepted it for delivery to SPI, not inbox delivery or a contract; the client keeps the request_id. Test without sending: POST the same body to …/offer-requests/test → "validated_test", email_sent:false. A quote or GET never sends email; never put contact details in a URL; without a POST tool, give the client `adviser_url` with `&agent=&language=` appended: the form shows the cashback sentence and names the agent. Errors come as `{status:"error", code, errors:[{field, message, choices}], guidance, retryable, retry_after_seconds}`: - 4xx, not retryable (400 submit body, 422 quote criteria): fix the named field using `choices`; `municipality_required`, `invalid_municipality`: send municipality_bfs or municipality from choices; `client_consent_required`: ask the consent question; `invalid_insurer`: choose among choices; `invalid_email_domain` (real route only): ask the client to check the email, resend with the SAME request_id; `invalid_comparison_reference`: copy comparison_id exactly; `comparison_refresh_required` (409): quote again, re-confirm the offer, resend with the SAME request_id; `dataset_changed` (409), `comparison_link_expired` (410): new comparison; `cashback_terms_outdated` (409): re-read cashback and present the current sentence. - 429 `rate_limited`: wait retry_after_seconds, then retry the identical request. 429 `contact_daily_limit`, not retryable: this contact already has five requests today; do not resend. 502 `delivery_unconfirmed`: retry the identical request with the same request_id; never claim success. - 503 `mail_unavailable`, `agent_requests_disabled`, `service_unavailable`: sending is unavailable; offer adviser_url or contact@sp-insurance.ch and do not claim an email was sent. 409 `request_conflict`: same request_id with different content; do not resubmit with a new id without the client. ## Connect MCP server, Streamable HTTP, no authentication: https://api.assurs.ch/mcp. Tools: compare_lamal_premiums, compare_lamal_household, get_lamal_metadata, get_active_customer_rewards, create_adviser_handoff_link, test_adviser_request, request_adviser_contact (the only one that sends email). - ChatGPT: chatgpt.com/plugins → Add custom MCP server → URL above → Authentication None; in a chat type @Assurs. Custom GPT Actions (until retirement): import the slim OpenAPI. - Claude (web, desktop, mobile): Customize → Connectors → Add custom connector → URL above → No sign-in. Claude Code: `claude mcp add --transport http assurs https://api.assurs.ch/mcp`. - Gemini app (US accounts): Settings → Connected apps → Custom apps → URL above. Gemini Enterprise: Connected apps → Add MCP Server (Streamable HTTP, no auth). Gemini CLI: `"mcpServers": {"assurs": {"httpUrl": ""}}`. - Grok: grok.com/connectors → New Connector → Custom → URL above. Grok Build: `grok mcp add --transport http assurs `. - OpenClaw: `openclaw mcp add assurs --url https://api.assurs.ch/mcp --transport streamable-http`. - Muse: platform.muse.ai directory (Existing MCP or Raw API with the slim OpenAPI). - APIs (OpenAI Responses, Anthropic Messages, Gemini, xAI): ready MCP tool declarations in https://assurs.ch/integrations/README.md. ## Resources - [OpenAPI slim](https://assurs.ch/openapi.json): seven operations (quote, household, metadata, rewards, test, submit, handoff). - [OpenAPI full](https://assurs.ch/openapi-full.json): every operation including legacy routes. - [llms-full.txt](https://assurs.ch/llms-full.txt): this file plus the agent pages as plain text. - [Skill](https://assurs.ch/skills/assurs-lamal/SKILL.md): agentskills.io SKILL.md for .agents/skills/, .claude/skills/ or ~/.openclaw/skills/. - [Cashback terms](https://api.assurs.ch/rewards/terms): programme, conditions, payer; JSON at https://api.assurs.ch/api/v1/rewards/programs. - [Metadata](https://api.assurs.ch/api/v1/lamal/metadata): years, model groups, deductibles, sources, sending status. - [Connection guide](https://assurs.ch/agents/connect.html), [method and sources](https://assurs.ch/agents/method.html), [privacy](https://assurs.ch/agents/privacy.html), [terms](https://assurs.ch/agents/terms.html). - [Official premiums](https://www.priminfo.admin.ch/fr/praemien): OFSP / Priminfo source. [Comparator](https://assurs.ch/): human site. ## Optional - [Full quote](https://api.assurs.ch/api/v1/lamal/premiums): /quote plus verification (OFSP keys, SHA-256); may exceed tool payload limits. - [Technical guide](https://assurs.ch/agents/), [manifest](https://assurs.ch/api/lamal/v1/manifest.json) and [Python verifier](https://assurs.ch/api/lamal/v1/verify-quote.py): local recomputation and OFSP verification. # Accès agents et développeurs · Comparateur LAMal SPI Source: https://assurs.ch/agents/ API HTTP LAMal pour les agents : comparaison avec le moteur du site, preuves OFSP et demandes d’offre confirmées vers Swiss Premium Insurance. Aller à la documentation Swiss Premium Insurance — comparateur (https://assurs.ch/) Le comparateur ↗ (https://assurs.ch/) DOCUMENTATION PUBLIQUE · PROTOCOLE AGENTS V2 # Un calcul commun pour les clients et leurs agents. Le comparateur de Swiss Premium Insurance compare l’assurance de base LAMal 2027 pour les personnes domiciliées en Suisse. Son API HTTP et son interface JavaScript utilisent le même moteur et les mêmes tarifs que le questionnaire. La comparaison est 100 % gratuite et sans engagement. Un agent peut calculer les offres, puis transmettre une demande à Swiss Premium Insurance après confirmation explicite du client. Aucun contrat n’est conclu et aucun e-mail n’est envoyé au client par cette API. ## Agents: start here Agents: read https://assurs.ch/llms.txt first. Protocol in four steps: (1) POST https://api.assurs.ch/api/v1/lamal/quote with the client’s exact criteria; (2) present the ranked official premiums, then cashback.client_sentence; (3) read submission.client_messages.consent_request and wait for an explicit yes; (4) POST https://api.assurs.ch/api/v1/lamal/offer-requests reusing submission.request_id and submission.comparison_id, then report the receipt. …/offer-requests/test never sends anything. MCP: https://api.assurs.ch/mcp (Streamable HTTP, no authentication). Skill: /skills/assurs-lamal/SKILL.md (https://assurs.ch/skills/assurs-lamal/SKILL.md). OpenAPI: /openapi.json (https://assurs.ch/openapi.json) (slim, seven operations) or /openapi-full.json (https://assurs.ch/openapi-full.json). Platform recipes: /integrations/ (https://assurs.ch/integrations/README.md). One person per quote; households (2-12 people): POST https://api.assurs.ch/api/lamal/v1/compare (operation calculateHousehold, MCP compare_lamal_household), then ONE offer request with comparison + comparison_token. Cashback: a client who concludes through SPI receives SPI’s lead fee back (CHF 30 for basic insurance) once the insurer approves the contract; nothing is paid to agents. Cashback terms: api.assurs.ch/rewards/terms (https://api.assurs.ch/rewards/terms). ## Parcours court : calculer, puis demander une offre - Calcul : utiliser GET ou POST https://api.assurs.ch/api/v1/lamal/quote, avec les critères exacts du client. Cette réponse compacte conserve les prix et tous les modèles admissibles. model_group=any compare toutes les catégories ; TEL_DIG limite à la télémédecine. Ne pas remplacer une naissance en 1982 par l’exemple 1988 si l’outil ne peut pas récupérer une URL. - Présentation et consentement : montrer les primes officielles puis la phrase cashback.client_sentence ; demander l’offre retenue et le moyen de contact ; lire submission.client_messages.consent_request et attendre un oui explicite. - Envoi après accord explicite : POST https://api.assurs.ch/api/v1/lamal/offer-requests avec request_id et comparison_id copiés depuis submission, insurer_id de l’offre choisie, contact, language et client_consent: true. submission.request_template contient ce corps avec des valeurs à remplacer. Aucun compte e-mail n’est nécessaire. - Si l’agent peut uniquement lire des pages : fournir le adviser_url retourné, en y ajoutant &agent=&language=, pour que le client ouvre et confirme sa demande ; le formulaire montre la phrase cashback et l’agent déclaré. Un GET ne transmet jamais de demande ; ne pas mettre les coordonnées dans une URL ni annoncer un envoi qui n’a pas été confirmé. Pour un contrôle technique, utiliser uniquement submission.test_endpoint (POST …/api/v1/lamal/offer-requests/test) avec des coordonnées fictives : email_sent:false, aucun lead ni paiement. La réponse complète de vérification est liée par full_response_url ; elle peut dépasser les limites de certains outils et n’est pas nécessaire pour préparer la demande. ## Ressources disponibles - Connexion MCP : ChatGPT, Claude, Claude Code, Gemini, Grok, OpenClaw, Codex, Muse et liens de calcul directs (https://assurs.ch/agents/connect.html) · Version autonome sur le service API (https://api.assurs.ch/agents/) - OpenAPI allégé : sept opérations (prepareLamalQuote, calculateHousehold, getLamalMetadata, getActiveCustomerRewards, testOfferRequest, submitOfferRequest, createAdviserHandoffLink) (https://assurs.ch/openapi.json) · OpenAPI complet, routes historiques incluses (https://assurs.ch/openapi-full.json) - Skill agentskills.io assurs-lamal (https://assurs.ch/skills/assurs-lamal/SKILL.md) · Fichiers d’intégration : registre MCP, extension Gemini, Codex, Claude Code, OpenClaw, API OpenAI / xAI / Gemini / Anthropic (https://assurs.ch/integrations/README.md) - Conditions du programme cashback (page) (https://api.assurs.ch/rewards/terms) · Statut JSON des programmes (https://api.assurs.ch/api/v1/rewards/programs) - Années, règles, modèles et date de validation du service (https://api.assurs.ch/api/v1/lamal/metadata) - Méthode et vérification indépendante (https://assurs.ch/agents/method.html) · Confidentialité API (https://assurs.ch/agents/privacy.html) · Conditions du parcours (https://assurs.ch/agents/terms.html) - Manifeste JSON : capacités, sources et empreintes SHA-256 (https://assurs.ch/api/lamal/v1/manifest.json) - OpenAPI : opérations HTTP pour les intégrations d’agents (https://assurs.ch/api/lamal/v1/openapi.json) - Manifeste du service HTTP en cours d’exécution (https://api.assurs.ch/api/lamal/v1/manifest.json) - Vérificateur indépendant des résultats contre les fichiers OFSP (https://assurs.ch/api/lamal/v1/verify-quote.py) - Schéma JSON des critères acceptés (https://assurs.ch/api/lamal/v1/request.schema.json) - Module JavaScript autonome (https://assurs.ch/api/lamal/v1/comparator.mjs) - Catalogue public OFSP 2027 au format JSON (https://assurs.ch/api/lamal/v1/catalogue.json) - llms.txt (https://assurs.ch/llms.txt) · llms-full.txt (https://assurs.ch/llms-full.txt) · .well-known/mcp.json (https://assurs.ch/.well-known/mcp.json) · .well-known/ai-catalog.json (https://assurs.ch/.well-known/ai-catalog.json) ## Calculer directement par HTTP Le parcours individuel v2 utilise GET ou POST https://api.assurs.ch/api/v1/lamal/premiums. Champs obligatoires : premium_year, postal_code, birth_year, deductible_chf, accident_included (booléen), model_group. Commune obligatoire si les tarifs ou disponibilités diffèrent ; language accepte fr/de/it/en, français par défaut. Les exemples supposent une franchise de CHF 2’500 et l’exclusion de l’accident : ne pas les appliquer sans choix du client. La réponse conserve les dix résultats du site dans offers, ajoute tous les modèles admissibles dans eligible_models, les métadonnées et un results_url lisible sans JavaScript. Le lien opaque ne contient aucune coordonnée ni jeton privé d’envoi. Il expire après 30 jours ; null indique que le partage n’est pas configuré. Le résultat complet vérifiable est dans comparison. Le champ adviser_url propose une assistance facultative. POST /api/v1/adviser/handoffs peut créer ce lien avec comparison_id et agent (alias agentContext), sans envoyer de coordonnées ni créer de lead ; il répond 503 adviser_unavailable lorsque le formulaire est désactivé (adviser_url vaut alors null). Le client reste libre d’utiliser Priminfo et de souscrire directement auprès de l’assureur. Les noms commerciaux restent ceux des sources françaises ; les exigences exactes de premier contact sont à confirmer auprès de l’assureur. L’adresse du service est https://api.assurs.ch/api/lamal/v1. Aucune clé n’est nécessaire. Un assistant doté d’un outil HTTP peut utiliser les opérations décrites par OpenAPI ; une conversation ordinaire ne reçoit pas automatiquement cet outil en découvrant le site. Le même contrat peut être connecté aux intégrations de ChatGPT, Claude ou Gemini. - GET /places?postcode=1955 identifie Chamoson et la commune OFS 6022. - POST /compare calcule le foyer à partir du schéma JSON. GET /compare accepte les mêmes critères en paramètres pour une seule personne. - POST /offer-requests (route historique, corps camelCase) transmet une demande d’offre confirmée à contact@sp-insurance.ch ; les nouvelles intégrations utilisent POST /api/v1/lamal/offer-requests décrit ci-dessous. Exemple de calcul à Chamoson, naissance en 1988 et télémédecine uniquement. La franchise de CHF 2’500 et l’exclusion de l’accident sont des hypothèses explicites de cet exemple ; elles doivent être choisies par le client. curl --fail-with-body https://api.assurs.ch/api/lamal/v1/compare \ -H 'Content-Type: application/json' \ --data '{"year":2027,"members":[{"birthYear":1988,"postcode":"1955","bfs":"6022","franchise":2500,"accident":"OHN","careType":"TEL_DIG"}]}' \ -o quote.json Ouvrir ce calcul en JSON avec GET (https://api.assurs.ch/api/lamal/v1/compare?year=2027&birthYear=1988&postcode=1955&bfs=6022&franchise=2500&accident=OHN&careType=TEL_DIG). Préférez POST pour éviter que les critères apparaissent dans l’URL et les journaux d’accès de l’hébergeur. ## Transmettre une demande pour le client Un agent doté d’un outil HTTP peut remplir le formulaire directement par API : notre serveur envoie l’e-mail à contact@sp-insurance.ch. Aucun compte de messagerie, inscription ou clé d’intégration n’est nécessaire en mode public. La confirmation du client peut être obtenue dans la conversation ; aucun passage par un formulaire web n’est imposé. Vérifier l’état du service (https://api.assurs.ch/api/v1/lamal/metadata) avant l’envoi. Une opération désactivée renvoie 503. Le formulaire lié reste une alternative facultative. Le calcul (/api/v1/lamal/quote ou /premiums) retourne comparison_id, cashback et submission : request_id (UUID v4 frais, à réutiliser tel quel), comparison_id, endpoint et test_endpoint (routes v2), method, content_type, token_valid_until (24 heures), request_template, client_messages (consent_request et consent_confirmation en fr/de/it/en), instructions, on_error et no_post_tool. Les clés historiques comparison, comparisonToken, expiresAt et testEndpoint restent présentes. Le client n’a aucun secret à créer. Utiliser une offre de offers ; ne pas substituer un autre modèle du catalogue. Test sans e-mail : appeler POST https://api.assurs.ch/api/v1/lamal/offer-requests/test avec le même corps et des coordonnées fictives. La réponse status: validated_test, email_sent: false, payment_created: false, request_id et preview (assureur, modèle, prime, résumé des critères, champs de contact qui seraient envoyés, phrase cashback et déclaration de consentement localisées) prouve uniquement la validation. Aucun e-mail, lead, droit au cashback ou paiement n’est créé. Ce test a son propre compteur (60/h/IP), ne consomme pas le quota d’envoi réel et reste disponible même si les vrais envois sont désactivés. Pour identifier la provenance, transmettre facultativement agent : name libre (^[a-z0-9_-]{1,40}$ après mise en minuscules, espaces remplacés par _, un littéral devenant other ; noms connus : chatgpt, claude, gemini, grok, openclaw, muse, codex, claude_code, copilot, perplexity, mistral, coding_agent, other), kind, display_name et integration_id facultatifs, cashback_requested booléen (défaut true). Les alias camelCase et l’objet historique agentContext sont acceptés. Aucun montant ou droit n’en découle. Ces champs sont déclaratifs et le CRM les reçoit séparément du nom de l’intégration authentifiée. Ne transmettre ni nom du client ni conversation dans l’identité de l’agent. Statut public du cashback (https://api.assurs.ch/api/v1/rewards/programs) et page des conditions (https://api.assurs.ch/rewards/terms) : lire la réponse actuelle, sans présumer une activation. disabled signifie qu’aucun montant n’est publié. active fournit les barèmes, conditions, versions et liens du programme commercial confirmé par l’opérateur ; le calcul renvoie alors cashback.client_sentence en fr/de/it/en, à présenter telle quelle au client après les primes officielles. Le cashback est un paiement séparé de SPI au client, jamais à l’agent, après conclusion du contrat par SPI et approbation par l’assureur, jamais une baisse de prime. Une comparaison ou demande d’offre ne prouve pas l’approbation du contrat. Le montant complémentaire est déterminé sur le contrat confirmé, pas sur une prime inventée ; supplementary_interest: true signale seulement un intérêt pour une complémentaire. Le programme est publié et payé par Swiss Premium Insurance Sàrl ; chaque client dont le contrat conclu par SPI est approuvé par l’assureur le reçoit, sans autre vérification d’éligibilité. Aucun paiement ni réclamation n’est exécuté par l’API. L’agent présente l’assureur et le modèle choisis, les critères du foyer, la prime et le destinataire SPI, puis lit la question consent_request en remplaçant {fields}, {insurer}, {model} et {premium}. Il demande ainsi l’accord explicite du client pour transmettre ses coordonnées et ces informations à Swiss Premium Insurance afin d’être recontacté. Une simple demande de comparaison ne vaut pas accord d’envoi. Après cet accord, envoyer à POST https://api.assurs.ch/api/v1/lamal/offer-requests un objet snake_case sans champ inconnu : request_id (celui de submission, ou tout UUID RFC 4122), comparison_id (ou l’ancienne paire comparison + comparison_token), insurer_id choisi dans les offres (ou offer_id), language (fr, de, it, en, es, pt, zh ; défaut : langue du calcul), contact (au moins un e-mail ou téléphone valide ; nom et message facultatifs), client_consent: true, puis facultativement subsidy_requested, supplementary_interest, agent et cashback_terms_version. Aucun tarif, destinataire alternatif ou texte d’e-mail n’est accepté : le serveur recalcule l’offre et produit le format CRM habituel. La route historique POST /api/lamal/v1/offer-requests (corps camelCase) reste disponible sans changement. Avec comparison_id, le serveur rouvre la référence du calcul (valable 30 jours, insensible aux redémarrages ; dataset_changed si l’édition des données a changé). Le jeton comparison_token reste valable 24 heures et lié aux prix et au jeu de données. En cas de comparison_refresh_required, recalculer et redemander confirmation si l’offre change. Réutiliser le même request_id et le même contenu lors d’une nouvelle tentative, notamment après un délai d’attente ou un 502. Ne jamais créer une nouvelle demande pour masquer une erreur incertaine. Les doublons sont dédupliqués pendant 24 heures par le relais en fonctionnement et le prestataire d’e-mail. status: "accepted" signifie que le prestataire a accepté l’envoi à SPI, pas que l’e-mail est arrivé dans la boîte ni qu’un contrat a été conclu. Le reçu contient request_id, email_sent, recipient, accepted_at, cashback (program_status, lamal_amount_chf, contract_status: "not_verified", payment_created: false, terms_url, next_steps) et correction_or_cancellation. Le suivi et la confirmation au client restent gérés par le cabinet. L’accord est déclaré par l’agent : le jeton de calcul n’est pas une preuve de son identité ni du consentement du client. Les erreurs des routes v2 sont du JSON { status: "error", code, errors: [{ field, message, choices? }], guidance, retryable, retry_after_seconds? } : 400 champ du corps d’envoi incorrect (client_consent_required, invalid_insurer avec choices, contact_required, invalid_email, invalid_phone, invalid_email_domain sur la route réelle uniquement, invalid_comparison_reference, unexpected_field), 422 critère de calcul incorrect (municipality_required, invalid_municipality, invalid_deductible avec choices), 409 comparison_refresh_required, dataset_changed, cashback_terms_outdated ou request_conflict, 410 comparison_link_expired, 413 corps trop volumineux, 415 format autre que JSON, 429 rate_limited (respecter retry_after_seconds) ou contact_daily_limit (cinq demandes par jour et par contact ; ne pas renvoyer), 502 delivery_unconfirmed, 503 envoi ou formulaire indisponible (mail_unavailable, agent_requests_disabled, service_unavailable, adviser_unavailable). retryable n’est vrai que pour rate_limited (429), 502 et 503 ; guidance indique l’action attendue (table complète dans le guide de connexion (https://assurs.ch/agents/connect.html#technical)). Limites : calcul 120 appels/min/IP et 1 200/min au total ; envois réels 60/h/IP, 5 par jour et par contact, 200 par jour au total ; tests 60/h/IP. Ces compteurs sont en mémoire et se réinitialisent au redémarrage. ## Vérifier indépendamment les prix La réponse conserve les mêmes offres et montants que le moteur local et ajoute verification : critères exacts, canton, région, classe d’âge, franchise, accident, identifiants de communes, liens et empreintes des fichiers officiels, ainsi que les empreintes du catalogue et du module exécutés. Les codes des modèles sont indiqués dans productKey après le séparateur |. Télécharger les quatre fichiers via les liens de verification.sourceFiles, depuis le jeu de données OFSP (https://opendata.swiss/fr/dataset/health-insurance-premiums) et les régions de primes Priminfo (https://www.priminfo.admin.ch/fr/downloads/aktuell), puis lancer le vérificateur Python autonome : python3 verify-quote.py quote.json premiums.xlsx names.xlsx areas.xlsx regions.xlsx Le vérificateur relit les XLSX sans notre moteur JavaScript ni le catalogue de primes. Il rapproche les primes brutes, catégories de modèles, restrictions communales, références, minimums par assureur et totaux du foyer. Il affiche les numéros de lignes du classeur de primes et les différences d’empreintes binaires. Il ne certifie pas l’ordre des ex æquo. Les fichiers officiels peuvent être remplacés : vérifier leur millésime. Cette vérification des données n’est pas une cotation obtenue dans l’interface Priminfo. Les montants nets retranchent une fois CHF 4.75 par mois : l’OFEV annonce CHF 57 par personne pour 2027 (https://www.bafu.admin.ch/fr/taxeco22027). Le manifeste du service permet de vérifier les empreintes de la version effectivement utilisée ; le site statique peut être mis à jour quelques instants avant ou après le service. ## Utiliser un navigateur Ouvrez le comparateur et attendez que window.SPIComparator soit disponible. Les champs et boutons du questionnaire disposent aussi de libellés utilisables par un agent navigateur. L’interface ci-dessous ne lit ni ne modifie les profils mémorisés. const request = { year: 2027, members: [{ birthYear: 1988, postcode: "1955", bfs: "6022", franchise: 2500, accident: "OHN", careType: "TEL_DIG" }] }; const result = window.SPIComparator.compare(request); // Exemple fictif. Choisir les critères avec la personne concernée. // result.ok indique si les critères permettent un calcul. ## Utiliser le module sans questionnaire Dans les exemples suivants, request désigne les critères de l’exemple ci-dessus. Depuis un navigateur sur ce site, le module peut être importé directement. Le catalogue est chargé une fois, puis les calculs sont locaux. const { loadComparator } = await import("/api/lamal/v1/comparator.mjs"); const comparator = await loadComparator(); const result = comparator.compare(request); Avec Node.js 20 ou une version plus récente, téléchargez le module et le catalogue dans le même dossier. Le calcul peut ensuite fonctionner hors ligne : import { readFile } from "node:fs/promises"; import { createComparator } from "./comparator.mjs"; const catalogue = JSON.parse(await readFile("./catalogue.json", "utf8")); const comparator = createComparator(catalogue); const result = comparator.compare(request); console.log(JSON.stringify(result)); Le catalogue et le module doivent provenir du même déploiement ; leurs empreintes figurent dans le manifeste. Seule l’année tarifaire 2027 est acceptée par cette version. ## Recueillir les bons critères Chaque personne doit avoir une année de naissance entière, un NPA suisse à quatre chiffres, une franchise, une couverture accident et un modèle de soins explicitement choisis. Il n’y a pas de franchise ou de couverture accident implicite dans cette interface. - accident: "MIT" inclut l’accident ; "OHN" l’exclut. - careType accepte any, BASE (libre choix), PRAXIS (cabinet/réseau), FLEX, TEL_DIG (télémédecine) ou PHARM (pharmacie). - De une à douze personnes sont acceptées. Les noms, e-mails, téléphones, genres et informations médicales ne sont pas demandés et ne font pas partie du schéma. - La méthode places("1820") renvoie les communes possibles et requiresCommune. Demandez une commune uniquement si requiresCommune: true : les tarifs ou les modèles disponibles diffèrent. Sinon, le NPA suffit. Reportez l’identifiant OFS dans bfs, sous forme de texte. - Une référence est facultative. searchReferences(member, "Sanitas") recherche les modèles disponibles, même hors du modèle de soins souhaité pour les offres. La clé choisie peut être placée dans currentProduct. - currentPremium: "450.50" indique une prime mensuelle actuelle de base, après redistribution et avant subsides. Elle remplace la référence calculée si les deux sont présentes. "0" est un montant déclaré valide ; une référence absente ne vaut pas zéro. Une entrée incorrecte produit ok: false et une liste errors avec le champ concerné. Les NPA nécessitant une précision donnent aussi les choix de communes. Aucun prix n’est calculé tant que ces erreurs ne sont pas corrigées. ## Lire les résultats Tous les montants sont des centimes de CHF entiers. Par exemple, monthlyCents: 42225 signifie CHF 422.25 par mois. Les montants annuels correspondent à douze primes mensuelles. Un montant d’économie négatif indique un surcoût ; null signifie qu’il manque une référence. Les offres sont classées par total mensuel croissant. Chaque offre regroupe toutes les personnes chez un même assureur et retient, pour chacune, le modèle le moins cher respectant ses critères. Jusqu’à dix assureurs distincts sont renvoyés. Chaque personne porte un memberIndex, à partir de zéro, correspondant à sa position dans la demande. Le catalogue contient 32 assureurs et 152 modèles. Le nombre compatible dépend des profils. Les restrictions officielles par commune sont prises en compte. Les produits soumis à une condition de sexe sont exclus ; les rabais conditionnels pour fratrie et les subsides ne sont pas déduits. La redistribution de CHF 4.75 par personne et par mois est déjà déduite des montants nets. Ne la soustrayez pas une deuxième fois. Les résultats comprennent les sources, l’année tarifaire, les modèles, les primes brutes et nettes par personne, et les écarts par rapport aux références. La comparaison ne confirme ni la participation d’un médecin, ni toutes les conditions d’un modèle. Ce sont des vérifications à effectuer avant toute souscription. Le calcul ne déclenche aucun envoi ; seule l’opération distincte offer-requests transmet une demande au cabinet après confirmation du client. ## Sources et confidentialité Le module réutilise le moteur du site, sans calcul parallèle ni interpolation des primes. Le catalogue reprend les fichiers publics OFSP et leurs empreintes. Le module autonome et l’interface navigateur ne stockent pas les demandes et ne transmettent pas les critères à SPI. L’hébergement peut traiter les informations de connexion nécessaires à la consultation des fichiers publics. Le calcul HTTP transmet les critères au serveur, sans stockage ni journalisation du corps par l’application. Les paramètres GET peuvent figurer dans les journaux d’accès de l’hébergeur. Une demande d’offre transmet les coordonnées et critères au cabinet via Resend, avec le même traitement que le formulaire du site ; les enregistrements techniques de déduplication du relais expirent après 24 heures. Le calcul n’accepte ni nom, ni adresse e-mail, ni numéro de téléphone. Primes OFSP / Priminfo ↗ (https://www.priminfo.admin.ch/fr/praemien) · Méthode du comparateur (https://assurs.ch/#methode) · Données du questionnaire (https://assurs.ch/#donnees) ## Connecter un agent et vérifier le service Pour ChatGPT, Claude, Claude Code, Gemini (app, Enterprise, CLI), Grok, OpenClaw, Codex ou Muse, suivre le guide de connexion (https://assurs.ch/agents/connect.html) : ajouter https://api.assurs.ch/mcp, sans authentification en mode public, puis sélectionner Assurs dans la conversation. L’outil request_adviser_contact transmet directement l’e-mail à SPI après confirmation du client, sans connexion à une messagerie ni formulaire externe. La lecture du site seule n’installe pas ces outils. L’app Gemini n’accepte les applications personnalisées que pour les comptes américains à ce jour ; l’ajout d’un serveur MCP dans l’application Muse n’est pas vérifié. Pour une intégration existante compatible avec les Actions, le contrat allégé openapi.json (https://assurs.ch/openapi.json) reste disponible avec l’authentification « None » en mode public jusqu’au retrait des GPT : la création de GPT personnalisés s’arrête le 26 octobre 2026 et les GPT sont retirés le 11 décembre 2026. La disponibilité de l’outil d’envoi selon le forfait ChatGPT n’est pas vérifiée. Le contrat complet est openapi-full.json (https://assurs.ch/openapi-full.json). Les agents de code installent le skill assurs-lamal (https://assurs.ch/skills/assurs-lamal/SKILL.md) dans .agents/skills/ ou .claude/skills/ ; les fichiers prêts à l’emploi sont dans integrations/ (https://assurs.ch/integrations/README.md). - Calculer avec prepareLamalQuote (MCP : compare_lamal_premiums ; foyer de 2 à 12 personnes : calculateHousehold / compare_lamal_household, puis un seul envoi avec comparison + comparison_token), en demandant les critères manquants ; la réponse contient déjà cashback et submission.request_id / comparison_id. getActiveCustomerRewards et getLamalMetadata restent disponibles pour relire les conditions et l’état du service. - Présenter les primes officielles puis cashback.client_sentence si le programme est actif. - Si le client souhaite une offre, lire consent_request avec les coordonnées, critères et assureur qui seront transmis à SPI et obtenir son accord explicite. - Appeler submitOfferRequest (MCP : request_adviser_contact) avec request_id et comparison_id ; conserver le même request_id en cas de nouvelle tentative. Pour vérifier une intégration, utiliser exclusivement testOfferRequest (test_adviser_request) et des coordonnées fictives. createAdviserHandoffLink fournit un lien de formulaire facultatif, sans envoi. Présenter d’abord les primes officielles et leurs sources. L’assistance SPI est facultative ; le client peut utiliser les résultats pour contacter directement l’assureur. Aucun éditeur d’IA ne garantit ni n’approuve ce service. Guide officiel des GPT Actions (https://developers.openai.com/api/docs/actions/getting-started) · Exploration par OpenAI (https://developers.openai.com/api/docs/bots). Le site autorise l’exploration publique ; cela ne garantit ni sa sélection dans une réponse ni un classement. Comparaison 100 % gratuite et sans engagement.Aucun frais facturé au client. Comparer les primes (https://assurs.ch/)Qui sommes-nous ↗ (https://www.swiss-premium-insurance.ch/qui-sommes-nous)Confidentialité ↗ (https://www.swiss-premium-insurance.ch/politique-confidentialite)Mentions légales ↗ (https://www.swiss-premium-insurance.ch/mentions-legales) © Swiss Premium Insurance Sàrl · Assurance de base 2027Nous contacter (mailto:contact@sp-insurance.ch) # Connecter assurs.ch à ChatGPT, Claude, Gemini, Grok ou un autre agent Source: https://assurs.ch/agents/connect.html Une seule URL MCP pour comparer les primes LAMal 2027 et demander une offre à Swiss Premium Insurance avec consentement : ChatGPT, Claude, Claude Code, Gemini, Grok, OpenClaw, Codex, Muse. # Comparer et demander une offre depuis votre assistant IA Agents and developers (English): assurs.ch is a free comparator of official Swiss basic health insurance (LAMal) premiums 2027 by Swiss Premium Insurance Sàrl (SPI), with a consented offer request to SPI; no API key. MCP server (Streamable HTTP): https://api.assurs.ch/mcp. Without MCP: GET https://api.assurs.ch/api/v1/lamal/quote?premium_year=2027&postal_code=…&birth_year=…&deductible_chf=…&accident_included=true|false&model_group=any&language=fr returns offers[], cashback.client_sentence and adviser_url; households (2-12 people): POST https://api.assurs.ch/api/lamal/v1/compare. Full protocol, consent and cashback sentences, errors: https://assurs.ch/llms.txt. Connectez assurs.ch une fois à ChatGPT, Claude, Gemini, Grok ou à tout autre agent compatible MCP. Vous pourrez ensuite poser vos questions et, après confirmation des informations à transmettre, demander à l’assistant d’envoyer votre demande directement à contact@sp-insurance.ch. Aucune connexion à votre messagerie n’est nécessaire. Swiss Premium Insurance exploite assurs.ch. La comparaison reste disponible sans coordonnées, sans conseil et sans souscription. Vous pouvez utiliser les résultats pour contacter directement un assureur. ## 1. Une seule adresse à ajouter Nom : Assurs · Swiss Premium Insurance Authentification : None / No sign in — aucune clé requise dans le mode public actuel. Transport : MCP Streamable HTTP, réponses JSON, sans session persistante. Server URL / Remote MCP server URL : https://api.assurs.ch/mcp Description : Comparer les primes LAMal 2027 et transmettre une demande d’offre à Swiss Premium Insurance, après confirmation du client. La lecture de cette page ne connecte pas automatiquement l’outil. L’ajout se fait dans votre compte, une seule fois. L’ouverture de l’URL dans un navigateur peut répondre 405 : c’est un point d’entrée d’outils, pas une page web. ## 2. Où l’ajouter Plateforme | Chemin exact ou commande | Remarque | ChatGPT | chatgpt.com/plugins (https://chatgpt.com/plugins) → + → Add custom MCP server → URL ci-dessus → Authentication None → Create as a plugin. Dans une conversation, tapez @ et choisissez Assurs. | Utilisez Refresh après une mise à jour du serveur. La disponibilité de l’outil d’envoi selon le forfait ChatGPT n’est pas vérifiée. Étapes officielles OpenAI (https://developers.openai.com/plugins/deploy/connect-chatgpt). | Custom GPT (Actions) | Importer le contrat allégé https://assurs.ch/openapi.json, authentification None. | La création de GPT personnalisés s’arrête le 26 octobre 2026 et les GPT sont retirés le 11 décembre 2026. Le contrat OpenAPI allégé reste disponible pour les Actions jusque-là ; préférez le plugin MCP ci-dessus. | Claude (web, desktop, mobile) | Customize → Connectors (https://claude.ai/customize/connectors) → Add custom connector → URL ci-dessus → No sign in → Add. Dans la conversation, activez Assurs via + → Connectors. | Dans une organisation Team ou Enterprise, l’administrateur ajoute d’abord le connecteur. Guide officiel Claude (https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp). | Claude Code | claude mcp add --transport http assurs https://api.assurs.ch/mcp | Ou copier integrations/claude-code/mcp.json (https://assurs.ch/integrations/claude-code/mcp.json) sous le nom .mcp.json à la racine du projet. Le skill peut aussi être copié dans .claude/skills/. | Gemini app (États-Unis uniquement aujourd’hui) | Settings → Connected apps → Custom apps → Add a custom app → URL ci-dessus. | Les applications personnalisées de l’app Gemini ne sont proposées qu’aux comptes américains à ce jour. | Gemini Enterprise | Team settings → Connected apps → Add MCP Server → Streamable HTTP → No authentication → URL ci-dessus. | Streamable HTTP uniquement. | Gemini CLI | "mcpServers": {"assurs": {"httpUrl": "https://api.assurs.ch/mcp"}} dans settings.json, ou gemini extensions install . | L’extension est dans integrations/gemini-extension/ (https://assurs.ch/integrations/gemini-extension/gemini-extension.json) ; sa publication sur un dépôt public est en attente. MCP Gemini CLI (https://geminicli.com/docs/tools/mcp-server/). | Grok | grok.com/connectors (https://grok.com/connectors) → New Connector → Custom → URL ci-dessus. | Aucune authentification. | Grok Build | grok mcp add --transport http assurs https://api.assurs.ch/mcp | API xAI : déclaration d’outil dans integrations/xai.json (https://assurs.ch/integrations/xai.json). | OpenClaw | openclaw mcp add assurs --url https://api.assurs.ch/mcp --transport streamable-http | Le transport streamable-http doit être explicite. Skill : télécharger https://assurs.ch/skills/assurs-lamal/SKILL.md dans ~/.openclaw/skills/assurs-lamal/ (référencement ClawHub en attente). | Codex | Copier le dossier du skill dans .agents/skills/ ; manifeste integrations/codex/openai.yaml (https://assurs.ch/integrations/codex/openai.yaml) (outil MCP streamable_http). | Même règle pour Cursor et Copilot : dossier du skill dans .agents/skills/ ou .claude/skills/. | Muse | Soumission au répertoire sur platform.muse.ai (https://platform.muse.ai/) : type de connexion Existing MCP (URL ci-dessus) ou Raw API avec https://assurs.ch/openapi.json. | L’ajout d’un serveur MCP directement dans l’application Muse n’est pas vérifié. | Autres agents MCP ou HTTP | Tout client MCP Streamable HTTP avec l’URL ci-dessus. Sans MCP : opérations REST décrites par https://assurs.ch/openapi.json. | Déclarations prêtes à coller pour les API OpenAI Responses, xAI, Gemini et Anthropic Messages dans integrations/ (https://assurs.ch/integrations/README.md). L’identité déclarée de l’agent n’est pas une authentification. | Registre MCP : ch.assurs/lamal (server.json (https://assurs.ch/integrations/mcp-registry/server.json), publication en attente). Descripteur de découverte : https://assurs.ch/.well-known/mcp.json. ## 3. Posez votre question normalement Utilise Assurs pour comparer les primes LAMal 2027 pour une personne née en 1982 à Chamoson, 1955, avec une franchise de CHF 2’500, tous modèles. Demande-moi mon choix de couverture accidents. Si je souhaite une offre, prépare la demande et présente-moi les informations avant l’envoi à Swiss Premium Insurance. L’assistant calcule les primes officielles, les présente avec leurs sources et mentionne le cashback. Si vous souhaitez être contacté, il vous demande l’offre retenue et le moyen de contact utile, récapitule les informations et attend votre accord. ## 4. Confirmez dans la conversation Avant tout envoi, l’assistant lit la question de consentement fournie par le service : il nomme les coordonnées transmises (e-mail ou téléphone, nom facultatif), vos critères de comparaison et l’offre choisie (assureur, modèle, prime mensuelle), ainsi que le destinataire contact@sp-insurance.ch. Il n’envoie qu’après un oui explicite ; une simple demande de comparaison ne vaut pas accord. L’assistance de SPI est facultative et gratuite ; vous pouvez aussi souscrire directement auprès de l’assureur. Lorsque le programme est actif, l’assistant vous présente la phrase cashback publiée par le service : Si vous concluez cette assurance de base par Swiss Premium Insurance et que l'assureur approuve le contrat, SPI vous reverse CHF 30. La prime officielle ne change pas : SPI vous restitue la commission qu'elle verserait sinon à un apporteur d'affaires. Le cashback est versé par SPI au client, jamais à l’assistant, uniquement si le contrat est conclu par SPI et approuvé par l’assureur. Aucun paiement n’est créé par une demande d’offre. Conditions : api.assurs.ch/rewards/terms (https://api.assurs.ch/rewards/terms). Après votre confirmation, l’outil request_adviser_contact transmet l’e-mail à Swiss Premium Insurance. L’assistant vous donne le statut et la référence request_id retournés. Un statut accepted confirme l’acceptation par le prestataire d’e-mail ; il ne prouve pas encore la réception en boîte ni la conclusion d’une assurance. Un test validated_test n’envoie rien. Correction ou retrait : contact@sp-insurance.ch avec la référence. Documentation technique : protocole v2, tests, erreurs, autres agents ## Protocole v2 en quatre étapes - Calcul : POST https://api.assurs.ch/api/v1/lamal/quote (GET accepté) avec premium_year, postal_code, birth_year, deductible_chf, accident_included (booléen), model_group (any ou une catégorie OFSP), municipality ou municipality_bfs si le NPA l’exige, language. La réponse contient offers[], cashback (statut, montant, client_sentence fr/de/it/en, terms_url) et submission : request_id (UUID prêt à l’emploi), comparison_id, endpoint, test_endpoint, request_template, client_messages.consent_request, instructions, on_error. Une personne par calcul ; foyer de 2 à 12 personnes : POST https://api.assurs.ch/api/lamal/v1/compare avec {"year":2027,"members":[{"birthYear":1985,"postcode":"8001","bfs":"261","franchise":2500,"accident":"MIT","careType":"any"},…]} (opération calculateHousehold, outil MCP compare_lamal_household), puis un seul envoi avec comparison = verification.criteria et comparison_token = submission.comparisonToken à la place de comparison_id, et n’importe quel UUID comme request_id. - Présentation : primes officielles, sources, puis cashback.client_sentence ; demander l’offre retenue et le moyen de contact. - Consentement : lire consent_request en remplaçant {fields}, {insurer}, {model}, {premium} ; n’envoyer qu’après un oui explicite. - Envoi : POST https://api.assurs.ch/api/v1/lamal/offer-requests avec le corps ci-dessous, puis rapporter le reçu. { "request_id": "d3b4…", "comparison_id": "", "insurer_id": 1509, "language": "fr", "contact": { "name": "", "email": "client@example.ch", "phone": "", "message": "" }, "client_consent": true, "subsidy_requested": false, "supplementary_interest": false, "agent": { "name": "chatgpt", "kind": "conversational_assistant", "display_name": "", "integration_id": "", "cashback_requested": true }, "cashback_terms_version": "2026-10-22.1" } request_id : réutiliser submission.request_id du calcul (tout UUID RFC 4122 est accepté) et le conserver avec le même contenu pour toute reprise. comparison_id remplace le renvoi des critères et du jeton : le serveur rouvre la référence, valable 30 jours et insensible aux redémarrages. L’ancienne paire comparison + comparison_token reste acceptée (jeton valable 24 heures, lié aux prix et au jeu de données). insurer_id doit être un offers[].insurer_id du calcul ; offer_id est accepté à la place. contact : e-mail ou téléphone obligatoire, nom et message facultatifs ; dans request_template ces champs sont des chaînes vides : remplir email ou phone et laisser l’autre vide (les valeurs littérales <…> sont ignorées). La route réelle vérifie en plus que le domaine de l’e-mail accepte le courrier (invalid_email_domain). client_consent doit être true. agent, subsidy_requested, supplementary_interest et cashback_terms_version sont facultatifs. Test sans e-mail : POST https://api.assurs.ch/api/v1/lamal/offer-requests/test, même corps, coordonnées fictives uniquement. Reçu status: "validated_test", email_sent: false, payment_created: false et un aperçu (preview) de ce qui serait envoyé. Aucun e-mail, lead, droit ou paiement n’est créé. Le test ne consomme pas le quota d’envoi réel et ne vérifie pas le domaine de l’e-mail. Reçu réel : status: "accepted", request_id, email_sent: true, recipient, accepted_at, cashback (program_status, lamal_amount_chf, contract_status: "not_verified", payment_created: false, terms_url, next_steps) et correction_or_cancellation. Accepté pour livraison à SPI : ni preuve de réception en boîte, ni contrat. ## Erreurs (enveloppe v2) Toute erreur des routes v2 renvoie { "status": "error", "code", "errors": [{ "field", "message", "choices"? }], "guidance", "retryable", "retry_after_seconds"? }. retryable n’est vrai que pour rate_limited (429), 502 et 503. Code (statut HTTP) | Reprise | Consigne | missing_field, unexpected_field, invalid_request_id, invalid_* (422 critères du calcul, 400 corps d’envoi) | non | Corriger le champ nommé ; choices liste les valeurs acceptées. | municipality_required, invalid_municipality (422) | non | Envoyer municipality_bfs ou municipality parmi les choix listés (chaque choix porte les deux clés ; un préfixe unique du nom de commune est accepté). | location_not_found (422) | non | NPA inconnu ; demander au client de le confirmer. | comparison_refresh_required (409) | non | Relancer le calcul, reconfirmer l’offre si elle a changé, puis renvoyer avec le même request_id. | invalid_comparison_reference (400) | non | Reprendre comparison_id exactement tel que renvoyé par le calcul, ou relancer un calcul. | dataset_changed (409), comparison_link_expired (410) | non | Données officielles ou lien expirés ; relancer un nouveau calcul. | client_consent_required (400) | non | Poser la question consent_request ; n’envoyer qu’après un oui explicite. | invalid_insurer (400) | non | Choisir insurer_id parmi choices (les offres classées). | contact_required, invalid_email, invalid_phone (400) | non | Demander au client un e-mail ou un téléphone valide. | invalid_email_domain (400, route réelle uniquement) | non | Le domaine de l’e-mail n’accepte aucun courrier (la route de test ne le vérifie pas) ; demander au client de vérifier l’orthographe ou de donner un téléphone, puis renvoyer avec le même request_id. | cashback_terms_outdated (409) | non | Relire cashback et présenter la phrase actuelle avant d’envoyer. | rate_limited (429) | oui | Attendre retry_after_seconds, puis renvoyer la requête identique. | contact_daily_limit (429) | non | Ce contact a déjà cinq demandes aujourd’hui ; ne pas renvoyer. | delivery_unconfirmed (502) | oui | Renvoyer la requête identique avec le même request_id ; ne jamais annoncer un succès. | mail_unavailable, agent_requests_disabled, service_unavailable (503) | oui | Envoi indisponible ; proposer adviser_url ou contact@sp-insurance.ch ; ne pas prétendre qu’un e-mail a été envoyé. | adviser_unavailable (503) | oui | Formulaire web désactivé : create_adviser_handoff_link / POST /api/v1/adviser/handoffs ne renvoient pas de lien ; proposer l’envoi direct ou contact@sp-insurance.ch. | request_conflict (409) | non | Même request_id avec un contenu différent ; ne pas renvoyer avec un nouvel identifiant sans le client. | Limites : calcul 120 appels/min/IP et 1 200/min au total ; envois réels 60/h/IP, 5 par jour et par contact, 200 par jour au total ; tests 60/h/IP, compteur distinct. Les doublons d’un même request_id sont dédupliqués pendant 24 heures. ## Routes historiques POST https://api.assurs.ch/api/lamal/v1/offer-requests et /offer-requests/test (corps camelCase : requestId, comparison, comparisonToken, insurerId, clientConsent, agentContext) restent disponibles sans changement, avec l’enveloppe d’erreur {ok:false, code}. Les routes v2 acceptent aussi ce corps historique (détecté par requestId). Les nouvelles intégrations utilisent les routes v2. ## Connexion MCP URL du serveur : https://api.assurs.ch/mcp. Transport Streamable HTTP, réponses JSON, sans session persistante. Les outils d’envoi utilisent les routes v2 et le corps ci-dessus. Une erreur d’outil revient en isError:true avec l’enveloppe v2 et http_status. Le serveur expose aussi le prompt lamal_compare_and_contact et les ressources docs://assurs/llms.txt, docs://assurs/skill.md, docs://assurs/cashback-terms, docs://assurs/privacy, docs://assurs/terms. Outil | Effet | compare_lamal_premiums | Calcul indépendant pour une personne, sans coordonnées ; renvoie submission.request_id et comparison_id. | compare_lamal_household | Calcul pour un foyer de 2 à 12 personnes (corps du moteur {year, members:[…]}) ; renvoie verification.criteria et submission.comparisonToken à envoyer avec comparison + comparison_token, sans textes cashback ni request_id. | get_lamal_metadata | Années, règles, sources, limites et disponibilité. | get_active_customer_rewards | Programme cashback publié : statut, version, conditions et liens. | create_adviser_handoff_link | Lien facultatif à ouvrir, aucun envoi ; 503 adviser_unavailable si le formulaire web est désactivé. | test_adviser_request | Validation fictive uniquement, reçu email_sent:false. | request_adviser_contact | Envoi réel à contact@sp-insurance.ch, uniquement après confirmation explicite du client. | ## Contrats, skill et fichiers d’intégration - openapi.json (https://assurs.ch/openapi.json) : contrat allégé, sept opérations (prepareLamalQuote, calculateHousehold, getLamalMetadata, getActiveCustomerRewards, testOfferRequest, submitOfferRequest, createAdviserHandoffLink), à importer dans les Actions ou Muse. openapi-full.json (https://assurs.ch/openapi-full.json) : toutes les opérations, y compris les routes historiques. - Skill assurs-lamal (https://assurs.ch/skills/assurs-lamal/SKILL.md) (format agentskills.io) pour OpenClaw, Codex, Claude Code, Cursor et Copilot ; référence détaillée dans references/protocol.md. - integrations/ (https://assurs.ch/integrations/README.md) : server.json du registre MCP, extension Gemini, manifeste Codex, mcp.json Claude Code, extrait OpenClaw, déclarations d’outils pour les API OpenAI Responses, xAI, Gemini et Anthropic Messages. - llms.txt (https://assurs.ch/llms.txt), llms-full.txt (https://assurs.ch/llms-full.txt), .well-known/mcp.json (https://assurs.ch/.well-known/mcp.json), .well-known/ai-catalog.json (https://assurs.ch/.well-known/ai-catalog.json). Le mode public n’exige aucune clé. Ne jamais fournir au client le secret de liens, la clé Resend ou les variables privées Render. Si l’opérateur active un mode réservé aux intégrations, fournir uniquement la clé d’intégration autorisée dans l’en-tête Authorization. ## Trois accès directs à tester Profil de démonstration : Chamoson 1955, naissance 1988, année 2027, télémédecine TEL_DIG, franchise CHF 2’500. L’exclusion de l’accident est uniquement une hypothèse explicite de test ; demander ce choix au client réel. - Calculer les primes en JSON compact, par GET (https://api.assurs.ch/api/v1/lamal/quote?premium_year=2027&postal_code=1955&municipality=Chamoson&birth_year=1988&deductible_chf=2500&accident_included=false&model_group=TEL_DIG&language=fr). - Lire les mêmes résultats en HTML, sans JavaScript (https://api.assurs.ch/compare?premium_year=2027&postal_code=1955&municipality=Chamoson&birth_year=1988&deductible_chf=2500&accident_included=false&model_group=TEL_DIG&language=fr). - Lire le statut actuel et les conditions des programmes (https://api.assurs.ch/api/v1/rewards/programs), ou la page des conditions du cashback (https://api.assurs.ch/rewards/terms). Le programme est publié et payé par Swiss Premium Insurance Sàrl : chaque client dont le contrat conclu par SPI est approuvé par l’assureur le reçoit, sans autre vérification d’éligibilité. La prime officielle reste inchangée. Ce document ne fige aucun prix ou montant promotionnel. Lire les réponses du service, leurs sources, leur date de validation et leurs limites. Le JSON compact contient les dix meilleurs résultats par assureur ainsi que tous les modèles admissibles importés ; full_response_url donne les preuves détaillées. Le HTML partagé ne contient aucune promotion cashback. Conserver l’année de naissance exacte ; utiliser model_group=any si le client veut le moins cher toutes catégories, et demander son choix concernant les accidents. Un GET ne peut jamais envoyer de demande, et les coordonnées ne doivent pas être ajoutées aux liens. Sans outil POST autorisé, proposer le adviser_url retourné en y ajoutant &agent=&language= (jamais de coordonnées) : le formulaire s’affiche dans cette langue, montre la phrase cashback, l’agent déclaré et chaque offre avec son modèle, et l’e-mail à SPI nomme l’agent ; tout autre paramètre est refusé (400 unexpected_query). ## Si un accès échoue Un succès HTTP depuis un réseau ne garantit pas l’accès depuis celui d’un éditeur d’IA. Un environnement de programmation sans réseau ne peut pas appeler l’API. Le premier appel d’une session peut être lent si le service redémarre. Pour un échec de navigation, conserver l’URL, l’heure UTC et le message exact ; comparer avec un accès HTTP externe et les journaux CDN. Une connexion MCP ou Action doit être testée dans l’application concernée avant d’être annoncée opérationnelle. GPT Actions (https://developers.openai.com/api/docs/actions/getting-started) · MCP OpenAI (https://developers.openai.com/api/docs/guides/tools-connectors-mcp) · Connecteurs Claude (https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp) · MCP Gemini CLI (https://geminicli.com/docs/tools/mcp-server/) · Spécification des skills (https://agentskills.io/) Documentation complète (https://assurs.ch/agents/) · Métadonnées (https://api.assurs.ch/api/v1/lamal/metadata) · Confidentialité (https://assurs.ch/agents/privacy.html) · Conditions (https://assurs.ch/agents/terms.html) · Comparateur officiel (https://www.priminfo.admin.ch/fr/praemien) # Méthode et sources de l’API LAMal · assurs.ch Source: https://assurs.ch/agents/method.html Méthode de l’API LAMal 2027 d’assurs.ch : moteur unique, catalogue OFSP de 32 assureurs et 152 modèles, critères explicites, classement par prime nette et vérification reproductible. # Méthode de comparaison LAMal pour les agents Swiss Premium Insurance, courtier en assurances, exploite assurs.ch. La comparaison peut être utilisée sans compte, contact, consentement marketing ou demande au cabinet. Elle ne constitue ni une souscription ni une recommandation personnalisée de couverture. ## Un seul moteur et un périmètre explicite Les résultats HTTP, HTML et du navigateur utilisent le même moteur et le même catalogue. La liste principale conserve les dix assureurs distincts les moins chers, avec le modèle admissible le moins cher par personne. La collection eligible_models expose en plus tous les modèles admissibles pour le profil individuel, sans filtre lié aux commissions ou aux assureurs distribués par SPI. Le catalogue importé couvre 32 assureurs et 152 modèles pour 2027. Il exclut les régions spéciales ZE/ZR, les rabais conditionnels de fratrie et le modèle Assura FV soumis à une condition de sexe. Il n’est donc pas décrit comme l’intégralité de toutes les variantes officielles. Les complémentaires, leur sélection médicale et leurs tarifs ne sont pas calculés. ## Critères obligatoires et modèles Année tarifaire, année de naissance, NPA, franchise, accident et catégorie sont explicites. Aucune année n’est substituée. Un NPA ambigu exige une commune OFS si la région ou l’admissibilité des modèles diffère. Si plusieurs communes ont exactement le même périmètre tarifaire, une commune non choisie reste inconnue. L’âge est l’année tarifaire moins l’année de naissance : enfant jusqu’à 18 ans, jeune adulte de 19 à 25 ans, adulte dès 26 ans. Les franchises enfant sont 0, 100, 200, 300, 400, 500 et 600 CHF ; celles des adultes sont 300, 500, 1 000, 1 500, 2 000 et 2 500 CHF. L’API ne déduit jamais le droit d’exclure l’accident d’un âge ou d’une profession. Les catégories restent celles du classeur OFSP : BASE, PRAXIS, FLEX, TEL_DIG et PHARM. Une requête TEL_DIG ne mélange pas PRAXIS ou FLEX. Les modèles hybrides restent dans leur catégorie officielle. Les noms commerciaux restent ceux du fichier français ; la disponibilité exacte des médecins, les exceptions au premier contact et les conditions contractuelles doivent être vérifiées auprès de l’assureur. Une URL contractuelle inconnue vaut null. ## Montants et classement Le moteur calcule en centimes entiers : net = brut officiel − redistribution environnementale, une seule fois, avant subsides. En 2027, l’OFEV annonce 57 CHF par personne et par an (https://www.bafu.admin.ch/fr/taxeco22027), soit 4.75 CHF par mois. Le montant annuel correspond à douze mensualités. Aucun avantage commercial n’est soustrait de la prime officielle. Classement par total net mensuel croissant ; à égalité, nom de l’assureur selon localeCompare(fr), puis nom du modèle pour les variantes équivalentes. Les références facultatives du comparateur historique ne modifient pas le classement. L’origine d’une demande ou le recours à un conseiller n’a aucune incidence sur les prix. ## Sources et vérification reproductible Priminfo : téléchargements officiels (https://www.priminfo.admin.ch/fr/downloads/aktuell) · Catalogue OFSP (https://opendata.swiss/fr/dataset/health-insurance-premiums) · Métadonnées du service (https://api.assurs.ch/api/v1/lamal/metadata). Le manifeste indique les quatre classeurs, leurs feuilles, colonnes et empreintes importées. Le catalogue et le module ont aussi une empreinte. Les dates last_validated_at et last_successful_official_sync_at correspondent au rapport validé pour ces données et ce moteur ; une date inconnue vaut null. La date de construction du site n’est jamais présentée comme une synchronisation OFSP. Enregistrer l’objet comparison de la nouvelle API en quote.json, télécharger les quatre classeurs depuis les sources officielles, puis exécuter le vérificateur Python autonome (https://assurs.ch/api/lamal/v1/verify-quote.py) : python3 verify-quote.py quote.json premiums.xlsx names.xlsx areas.xlsx regions.xlsx Ce lecteur XLSX n’utilise ni le moteur JavaScript ni les lecteurs du CRM. Il contrôle tarifs bruts/nets, restrictions, catégories, minima par assureur et ordre des montants. L’ordre lexical entre prix strictement égaux est couvert par les tests de parité du moteur, pas certifié indépendamment par Python. Une différence binaire de classeur peut être purement éditoriale ; le contrôle des lignes et correspondances reste décisif. Aucun résultat n’est présenté comme une cotation obtenue en direct dans l’interface Priminfo. ## Alternatives et liens Vous pouvez poursuivre sur le comparateur officiel Priminfo (https://www.priminfo.admin.ch/fr/praemien) puis directement auprès de l’assureur. Le comparateur interactif (https://assurs.ch/) reste accessible indépendamment du parcours de contact. Les liens de résultats publics expirent après 30 jours et exigent un nouveau calcul si les données changent ; ils ne bloquent aucun tarif. Chaque calcul fournit submission.request_id et submission.comparison_id. Une demande d’offre réutilise ce request_id et le conserve, avec le même contenu, pour toute nouvelle tentative : le relais déduplique pendant 24 heures et un même identifiant avec un contenu différent est refusé. comparison_id rouvre la référence du calcul pendant 30 jours, indépendamment des redémarrages, et est refusé si l’édition des données officielles a changé. Le jeton comparison_token, encore accepté avec l’objet comparison, est valable 24 heures et lié à l’empreinte des prix et au jeu de données ; un prix modifié impose un nouveau calcul et une nouvelle confirmation du client. Les routes v2 acceptent aussi le corps camelCase historique (détecté par requestId) et répondent alors dans le même vocabulaire : reçu { ok, requestId, … } et enveloppe d’erreur { ok: false, code }. Sur la route historique, cashback.requested du reçu vaut désormais true par défaut lorsque agentContext est absent, comme dans l’e-mail CRM. Documentation agents (https://assurs.ch/agents/) · Confidentialité (https://assurs.ch/agents/privacy.html) · Conditions (https://assurs.ch/agents/terms.html) # Données des API et liens d’agents · assurs.ch Source: https://assurs.ch/agents/privacy.html Données traitées par l’API et les liens d’agents d’assurs.ch : critères de calcul sans coordonnées, champs transmis à Swiss Premium Insurance lors d’une demande d’offre, conservation, correction et retrait. # Données des API et des liens d’agents ## Summary in English Controller: Swiss Premium Insurance Sàrl, Place Cornavin 14, 1201 Geneva, insurance intermediary registered with FINMA (F01305043); contact contact@sp-insurance.ch (mailto:contact@sp-insurance.ch). Quotes (/api/v1/lamal/quote, /premiums, /api/lamal/v1/compare) accept tariff criteria only and carry no personal data; a comparison creates no lead and no tracking. An offer request (POST /api/v1/lamal/offer-requests, MCP request_adviser_contact) transmits to SPI, by email through Resend and then in SPI’s mailbox and CRM, exactly: the contact given (email or phone, optional name and message), the language, the comparison criteria (postcode, commune, birth year, deductible, accident cover, model category, tariff year), the selected insurer and model with its premium, the client_consent confirmation, the optional subsidy_requested and supplementary_interest flags, the declared agent identity, the cashback terms version presented and the request_id; nothing else, never a conversation. The relay keeps for at most 24 hours an in-memory idempotency ledger keyed by request_id (body hash and receipt) and SHA-256 contact fingerprints for the daily limit; it stores no message bodies. Emails and CRM records are kept under SPI’s privacy policy. The test route sends and stores nothing. Correction or withdrawal: contact@sp-insurance.ch with the request_id. Full notice in French below. Responsable du service : Swiss Premium Insurance, Place Cornavin 14, 1201 Genève. Contact : contact@sp-insurance.ch (mailto:contact@sp-insurance.ch). Cette notice décrit le parcours API ; le questionnaire humain existant conserve son fonctionnement et sa propre notice. ## Comparer sans devenir un prospect Le calcul accepte uniquement les critères tarifaires. Il refuse nom, e-mail, téléphone, données médicales, identité bancaire ou conversation avec un agent. Aucune demande de contact, inscription, fiche partielle, publicité ni mesure de conversion n’est déclenchée par un calcul ou l’ouverture d’un résultat. Les requêtes passent par Render. L’application ne journalise pas les corps ; l’hébergeur peut traiter IP et journaux d’accès. Préférer POST à GET pour garder les critères hors des URL. Un NPA et une année de naissance restent des informations de profil : ne pas les traiter comme anonymes par principe. Les outils MCP utilisent les mêmes opérations et contrôles que l’API REST. La connexion et la liste des outils ne créent aucun prospect. Le serveur ne conserve pas de session MCP ni les informations du client logiciel reçues à l’initialisation. Un test de demande utilise des coordonnées fictives, sans envoi d’e-mail. ## Partager un résultat L’URL contient une référence opaque chiffrée et authentifiée, aucun nom, contact ou jeton privé d’envoi. Le serveur ne conserve pas de table de profils pour ces liens. Ils restent lisibles pendant 30 jours avec la même clé serveur et la même version des données. Toute personne possédant le lien peut lire les critères et résultats : ne le partagez qu’à bon escient. Le lien n’autorise ni contact ni paiement. Une rotation de la clé invalide les liens. Le calcul HTML direct accepte aussi les critères tarifaires en paramètres, sans référence préalable. Ces critères sont alors lisibles dans l’URL et peuvent figurer dans les journaux de l’hébergeur ; privilégier le lien opaque renvoyé par le calcul pour partager un résultat. Aucune coordonnée n’est acceptée dans ces paramètres. Les pages de résultats et de contact sont noindex, sans JavaScript publicitaire, cookie ou traceur, avec politique de référent no-referrer. Les nombreuses variantes de résultats ne sont pas ajoutées au sitemap. Noindex n’est pas un contrôle d’accès. ## Demander une assistance facultative Le formulaire dédié ne transmet rien pendant la saisie ou à la fermeture. Son bouton final envoie les informations affichées : contact choisi (e-mail ou téléphone), nom facultatif, message, critères et assureur sélectionné. La confirmation du client est obligatoire et distincte d’un consentement marketing ; aucune complémentaire n’est imposée. L’API d’envoi direct, REST ou MCP, exige également un accord explicite. Une clé d’intégration délivrée par SPI est nécessaire uniquement si l’opérateur active le mode réservé aux intégrations ; le mode public fonctionne sans clé. L’envoi direct v2 (POST /api/v1/lamal/offer-requests) transmet à SPI exactement les champs suivants : le contact fourni (e-mail ou téléphone, nom et message facultatifs), la langue, les critères de la comparaison rouverte par comparison_id ou renvoyés dans comparison (NPA, commune, année de naissance, franchise, couverture accident, catégorie de modèle, année tarifaire), l’assureur et le modèle sélectionnés avec leur prime, la confirmation client_consent, les indicateurs facultatifs subsidy_requested et supplementary_interest, l’identité déclarée de l’agent (agent.name, kind, display_name, integration_id, cashback_requested), la version des conditions cashback présentée et la référence request_id. Rien d’autre n’est accepté ni transmis : aucune conversation, aucun tarif saisi par l’agent, aucun destinataire alternatif. Le point de test /api/v1/lamal/offer-requests/test (et sa route historique) ne transmet rien : aucun e-mail, aucun lead, aucun enregistrement ; il renvoie seulement un aperçu des champs qui seraient envoyés. La demande est adressée à contact@sp-insurance.ch via Resend, puis traitée dans la messagerie et le CRM de SPI. L’identité déclarée de l’agent (ChatGPT, Claude, Claude Code, Gemini, Grok, OpenClaw, Muse, Codex ou autre) peut accompagner la demande. Une intégration authentifiée est indiquée séparément : son nom déclaré n’est pas une preuve du modèle utilisé ni d’un droit à un avantage. La conservation est inchangée par le protocole v2 : le relais garde pendant au plus 24 heures après une tentative des empreintes de déduplication et reçus en mémoire ; les requêtes en cours sont bornées par le délai d’envoi. Les compteurs réseau sont temporaires ; la limite par contact repose sur une empreinte SHA-256 de l’e-mail ou du téléphone, jamais sur la valeur en clair. Le relais n’archive pas les corps. Les e-mails et dossiers CRM sont conservés selon la politique de confidentialité de SPI (aussi longtemps que nécessaire aux finalités, puis la durée imposée par les obligations légales) ; suppression sur demande à contact@sp-insurance.ch avec la référence request_id. Ces données ne disparaissent pas lors d’un redémarrage du relais. Pour corriger ou retirer une demande, écrire à contact@sp-insurance.ch avec sa référence. Une annulation ne peut pas rappeler un e-mail déjà envoyé. Aucun accès public à un dossier personnel ou statut de paiement n’est offert par un identifiant devinable. Politique de confidentialité de SPI (https://www.swiss-premium-insurance.ch/politique-confidentialite) · Documentation agents (https://assurs.ch/agents/) # Conditions d’utilisation de l’API · assurs.ch Source: https://assurs.ch/agents/terms.html Conditions du parcours API d’assurs.ch : comparaisons non contractuelles, demande d’offre confirmée par le client, limites d’usage et conditions du cashback de Swiss Premium Insurance. # Conditions du parcours API ## Summary in English Operator: Swiss Premium Insurance Sàrl, Place Cornavin 14, 1201 Geneva, insurance intermediary registered with FINMA (F01305043); contact contact@sp-insurance.ch (mailto:contact@sp-insurance.ch). Comparisons use the imported OFSP 2027 data and the site’s engine; they conclude no insurance, guarantee no acceptance and do not depend on where a request comes from. Quotes carry no personal data and create no lead; SPI assistance is optional and the client may apply directly with an insurer. An offer request transmits only the fields the client confirmed (contact, language, criteria, selected offer, consent, optional flags, declared agent, cashback terms version, request_id); a receipt accepted means the email provider accepted the message for SPI, not inbox delivery, a callback, a contract or a payment. Limits: 120 calculations per minute per IP, 60 real requests per hour per IP, 5 per day per contact, 200 per day in total; the relay deduplicates the same request_id for 24 hours and keeps no message bodies. Cashback: published and paid by Swiss Premium Insurance Sàrl to the client, never to an agent, once a contract concluded through SPI is approved by the insurer (CHF 30 for a basic insurance contract, one month’s premium for a confirmed supplementary contract); the official premium is unchanged and no claim form is needed. Terms: api.assurs.ch/rewards/terms?language=en (https://api.assurs.ch/rewards/terms?language=en). Correction or withdrawal: contact@sp-insurance.ch with the request_id. Full text in French below. Les comparaisons non contractuelles utilisent les données OFSP importées et le moteur du site. Elles ne concluent pas d’assurance, ne garantissent pas une acceptation et ne remplacent pas les conditions d’un assureur. Les limites et dates de validation accompagnent les résultats. L’utilisation des prix est indépendante de toute demande au courtier. Vous pouvez consulter Priminfo ou souscrire directement auprès de l’assureur. Aucun compte, coordonnées ou consentement publicitaire n’est nécessaire pour comparer. Les primes et classements sont indépendants de l’origine de la demande. La création d’un lien de contact n’envoie aucune demande. Un envoi confirmé requiert la transmission volontaire des champs affichés. Un reçu « accepté pour envoi » confirme uniquement l’acceptation par le prestataire, pas la livraison en boîte, le rappel effectif, une souscription ou un paiement. Réutiliser exactement la même référence et le même contenu après un délai d’attente ou une réponse incertaine. Respecter les limites : calcul 120 requêtes/minute/IP et 1 200/minute au total ; envoi direct par les routes agents 60 tentatives/heure/IP, 5 par jour et par contact (empreinte de l’e-mail ou du téléphone) et 200/jour au total ; test sans envoi 60/heure/IP sur un compteur distinct ; formulaire du site 10 tentatives/heure/IP ; formulaire dédié 10 tentatives/heure/IP et 100 tentatives/jour. Les compteurs mémoire sont réinitialisés au redémarrage. Le service peut renvoyer une erreur temporaire et ne fournit pas de garantie de disponibilité contractuelle. MCP réutilise les mêmes contrôles et le même registre d’envoi que REST. Un appel d’outil (tools/call) consomme uniquement le budget de la route correspondante ; les autres méthodes du protocole consomment le budget de transport. Les limites de contact s’appliquent de manière commune aux deux transports. Les indications d’outil ne remplacent ni le consentement ni les validations serveur. Les outils d’agents doivent obtenir le choix explicite de franchise et d’accident, présenter les limites du modèle et demander confirmation avant tout contact. Ne transmettre aucune conversation brute, donnée médicale ou bancaire. La présence d’une documentation publique ne confère pas automatiquement d’outil à une conversation ChatGPT, Claude ou Gemini et n’implique aucune recommandation ou approbation de leurs éditeurs. Le mode de test /api/v1/lamal/offer-requests/test (route historique /api/lamal/v1/offer-requests/test) valide une demande fictive sans envoi d’e-mail ni création de dossier. Sa référence ne constitue pas un reçu de demande réelle. Le serveur peut accepter un envoi direct sans clé d’intégration en mode public ; le nom de l’agent reste déclaratif et l’accord du client demeure nécessaire. Les conditions commerciales actuelles de cashback, lorsqu’un programme est actif, figurent dans le statut API des programmes (https://api.assurs.ch/api/v1/rewards/programs) et sur la page des conditions du programme (https://api.assurs.ch/rewards/terms) (fr/de/it/en, paramètre ?language=). Le versement séparé au client dépend d’un contrat conclu et approuvé par l’assureur ; il ne réduit pas les primes officielles. L’équipe SPI vérifie le contrat et gère le paiement. L’API ne conclut pas d’assurance et ne crée aucun paiement. Résumé du programme publié (version 2026-10-22.1) : déclencheur, contrat conclu par Swiss Premium Insurance et approuvé par l’assureur ; payeur, Swiss Premium Insurance, qui restitue la commission qu’elle verserait sinon à un apporteur d’affaires ; bénéficiaire, le client uniquement ; montant, CHF 30 pour un contrat LAMal et l’équivalent d’un mois de prime pour un contrat complémentaire confirmé. Aucun paiement n’est versé à un agent, un éditeur d’IA ou une intégration. La prime officielle ne change pas, le paiement n’est pas automatique et aucun formulaire de réclamation n’est requis ; le client conserve son request_id. La phrase présentée au client est celle publiée par le service (cashback.client_sentence) ; une version présentée différente de la version publiée est refusée (cashback_terms_outdated). Correction ou retrait d’une demande : contact@sp-insurance.ch (mailto:contact@sp-insurance.ch), en indiquant la référence. Ces conditions d’utilisation ne remplacent pas les conditions du programme cashback publiées sur api.assurs.ch/rewards/terms (https://api.assurs.ch/rewards/terms) ; le versement suit la conclusion du contrat par Swiss Premium Insurance et son approbation par l’assureur. Méthode et sources (https://assurs.ch/agents/method.html) · Confidentialité (https://assurs.ch/agents/privacy.html) · Priminfo (https://www.priminfo.admin.ch/fr/praemien)