Quote products
quote_onboarding_productsCalculates indicative prices for up to twenty products for the company with this CVR, from one flat answers object. A plain key answers a question for the company and for every selected product that asks it; <product>.<name> answers one product's question. Stored answers and company discounts are not reused; supply required answers explicitly. An optional partnerCode applies that partner's discount. Enum fields use {value, label: {da, en}}. Each product has a status.value: only quoted products have a price; contactPlain products need an individual offer from Plain and unavailable ones cannot be offered (see issue). Prices are in DKK (major units) per billingFrequency.value period, with annualPrice for comparison and totals across products. State prices with each quote's display text in the customer's language, and always show the disclaimer. When pricePerEmployee is true, the price is per employee: say so using the quote's notice, as the customer selects the covered employees on Plain. Unknown answer keys are ignored and reported in warnings; required answers are never inferred. Nothing is bound, created or charged. Works without signing in, as a public new-company quote. Quotes for an existing customer must use the selected, authorized company's CVR. Active products return status.value alreadyInsured with no new-offer price and are excluded from totals and creation; held prerequisites do not need to be selected again. Check list_companies.canCreateOffers before promising to create offers. Quoting itself only needs policies:read. For existing companies, use get_onboarding_payment_link after creating offers for authenticated review; continueUrl is the public new-company signup page and does not apply private policy exclusions.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"cvr": "<cvr>",
"products": "<products>",
"answers": "<answers>"
},
"name": "quote_onboarding_products"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cvr | Yes | Danish company registration number (CVR), eight digits, e.g. 39488914. | |
| region | No | Market. Only Denmark (dk) is supported. Optional; defaults to dk. | dk |
| answers | Yes | Every answer in one object, keyed by the catalog question `name`. A plain name answers that question for the company and for every selected product that asks it; `<product>.<name>` (e.g. loesoereforsikring.basement) answers only that product's question and takes precedence. Employee FTE questions are answered as `<name>.fullTime` and `<name>.partTime` head counts: integers from 0 to 9999 inclusive. When required, send both counts explicitly, including zero. | |
| products | Yes | The products to quote: 1 to 20 distinct slugs, including any products they require. | |
| startDate | No | Policy start date (YYYY-MM-DD). Defaults to today. Must be between today and one year ahead. | |
| partnerCode | No | Optional partner discount code, 2-64 letters, digits, hyphens or underscores. Must be active. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| quotes | Yes | One quote per selected product, in request order. | |
| totals | Yes | Totals of the quoted products; null when no product is included. | |
| quoteId | Yes | Identifies these prices; pass it as `quoteId` to /start with the exact original quote request. Only quoted products become offers. Null when no product is quoted. | |
| warnings | No | Non-fatal problems with ignored answers. Omitted when there are none. | |
| expiresAt | Yes | Until when quoteId can be used for /start, unless prices change first; then request a new quote. | |
| startDate | Yes | The insurance start date the prices apply to; today when the request has none. | |
| disclaimer | Yes | Show with the prices: they are indicative, and nothing binds until the customer signs on Plain. | |
| continueUrl | Yes | Where the customer reviews this quote on Plain and continues to sign up. Opening it creates nothing. |