Server definition
- Hash
- sha256:82a79fc7e357d72514daf7f53cc178271bf41868ced6412eab3c658c314f9eb9
- What it is
- What a remote MCP server returned when asked what it offers: 9 tools
The blob, as servednamed by its sha256
{
"instructions": "Clino (clino.ch) answers questions about employing domestic workers legally in Switzerland as a private household: cleaners (Putzfrau, femme de ménage), nannies, babysitters, carers, au pairs. Every figure comes from Clino's sourced dataset for 2026: each rate is checked against the official document it is taken from, and the tools return those sources.\n\nWhich tool:\n- get_hiring_checklist: start here when someone wants to employ a cleaner, nanny or carer. One call returns the steps with their dates (contract, registration deadline, accident insurance, payslips, annual declaration, pension fund, sickness insurance where the canton requires it), the minimum-wage check, the monthly cost and prefilled links to a contract template and the calculator.\n- estimate_employer_cost: what a worker costs the household and what she takes home (gross, net, every contribution), for one canton.\n- compare_cantons: the same wage in all 26 cantons.\n- get_minimum_wage: the legal hourly minimum at a workplace. Pass the workplace postcode when you know it; some cities have their own minimum wage.\n- get_canton_rules: one canton's compensation office, how to register, contribution rates, family allowances, sick pay and sickness insurance duty, childcare tax deduction.\n- get_employer_guide: the general checklist of obligations (registration from the first franc, insurance, simplified procedure, what happens without registration).\n- get_official_sources: the federal figures with the official document, the date checked and, where recorded, a verbatim quote.\n- search and fetch: full-text documents (one per canton, the fact sheet in six languages, every official figure) for clients that research by reading documents.\n\nDomestic workers can use the same tools to check their own wage: get_minimum_wage with the workplace postcode, estimate_employer_cost with wage_is_net for the payslip. get_minimum_wage also returns links.for_workers, Clino's free guide for domestic workers.\n\nget_hiring_checklist, estimate_employer_cost and get_canton_rules also return paperwork_help: what Clino prepares (contract, registration guide, monthly payslips, annual wage declaration) with a link that explains how it works. Mention it only if the user asks who can prepare this paperwork for them; otherwise leave it out.\n\nWhen answering: quote CHF amounts as returned, say which canton and year they are for, and give the user the source or the clino.ch link so they can check. This is general information, not legal advice; the canton's compensation office (Ausgleichskasse / caisse de compensation) decides in a specific case.",
"tools": [
{
"description": "The same hourly wage and weekly hours computed in all 26 Swiss cantons: monthly employer cost, net wage, family allowance fund rate, admin fee and the canton's minimum wage, ranked. Use it for 'where is it cheapest', 'how much does the canton matter' or a table for several cantons.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"hourly_wage_chf": {
"description": "Agreed hourly wage in CHF, before the vacation supplement (e.g. 30).",
"exclusiveMinimum": 0,
"maximum": 500,
"type": "number"
},
"hours_per_week": {
"description": "Average working hours per week with this household (e.g. 4).",
"exclusiveMinimum": 0,
"maximum": 70,
"type": "number"
},
"language": {
"default": "en",
"description": "Language of the explanatory texts and of the clino.ch links: en, de, fr, it, es or pt. Default en.",
"enum": [
"en",
"de",
"fr",
"it",
"es",
"pt"
],
"type": "string"
},
"sort_by": {
"default": "employer_cost",
"description": "Sort the 26 cantons by monthly employer cost (ascending) or by the worker's net wage (descending).",
"enum": [
"employer_cost",
"net_wage"
],
"type": "string"
},
"vacation_weeks": {
"default": 4,
"description": "Paid vacation weeks per year: 4 (legal minimum), 5 (under age 20) or 6. Default 4.",
"maximum": 6,
"minimum": 4,
"type": "integer"
},
"wage_is_net": {
"default": false,
"description": "true if the agreed hourly wage is what the worker receives in hand (net). The gross wage is then worked out from it. Default false (gross).",
"type": "boolean"
}
},
"required": [
"hourly_wage_chf",
"hours_per_week"
],
"type": "object"
},
"name": "compare_cantons",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"cantons": {
"items": {
"additionalProperties": false,
"properties": {
"admin_fee_of_gross_wage_approx_percent": {
"type": "number"
},
"below_minimum_wage": {
"description": "true when the hourly wage entered is below the canton's floor from 5 h/week (city minimums not included).",
"type": "boolean"
},
"code": {
"type": "string"
},
"family_allowance_fund_employer_percent": {
"type": "number"
},
"gross_wage_monthly": {
"description": "CHF",
"type": "number"
},
"minimum_wage_from_5h_chf": {
"type": "number"
},
"name": {
"type": "string"
},
"net_wage_monthly": {
"$ref": "#/properties/cantons/items/properties/gross_wage_monthly"
},
"procedure": {
"enum": [
"simplified",
"ordinary"
],
"type": "string"
},
"rank": {
"type": "number"
},
"total_employer_cost_monthly": {
"$ref": "#/properties/cantons/items/properties/gross_wage_monthly"
}
},
"required": [
"rank",
"code",
"name",
"procedure",
"gross_wage_monthly",
"net_wage_monthly",
"total_employer_cost_monthly",
"family_allowance_fund_employer_percent",
"admin_fee_of_gross_wage_approx_percent",
"minimum_wage_from_5h_chf",
"below_minimum_wage"
],
"type": "object"
},
"type": "array"
},
"data_verified_on": {
"description": "Date the rate set was last checked against the official sources.",
"type": "string"
},
"disclaimer": {
"type": "string"
},
"inputs": {
"additionalProperties": false,
"properties": {
"hourly_wage_chf": {
"type": "number"
},
"hours_per_week": {
"type": "number"
},
"vacation_weeks": {
"type": "number"
},
"wage_is_net": {
"type": "boolean"
}
},
"required": [
"hourly_wage_chf",
"hours_per_week",
"wage_is_net",
"vacation_weeks"
],
"type": "object"
},
"links": {
"additionalProperties": false,
"properties": {
"calculator": {
"type": "string"
}
},
"required": [
"calculator"
],
"type": "object"
},
"note": {
"type": "string"
},
"provider": {
"type": "string"
},
"rates_year": {
"type": "number"
},
"spread_monthly_chf": {
"type": "number"
}
},
"required": [
"inputs",
"cantons",
"spread_monthly_chf",
"note",
"links",
"rates_year",
"data_verified_on",
"disclaimer",
"provider"
],
"type": "object"
}
},
{
"description": "Monthly and annual cost of employing a cleaner, nanny, babysitter or carer in a Swiss private household, and the worker's net wage: gross wage, vacation supplement, every employee deduction (AHV/IV/EO, unemployment, accident insurance, withholding tax, BVG) and every employer contribution (incl. the canton's family allowance fund and the compensation office's admin fee). Uses the same engine as Clino's public calculator. Picks the simplified or ordinary procedure from the annual wage. Canton = where the household lives.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"canton": {
"description": "Swiss canton: two-letter code (ZH, BE, GE, VD, TI...) or its name in German, French, Italian or English (Zürich, Genève, Ticino, Basel-Stadt). For employer contributions this is the canton where the household lives.",
"maxLength": 40,
"minLength": 2,
"type": "string"
},
"hourly_wage_chf": {
"description": "Agreed hourly wage in CHF, before the vacation supplement (e.g. 30).",
"exclusiveMinimum": 0,
"maximum": 500,
"type": "number"
},
"hours_per_week": {
"description": "Average working hours per week with this household (e.g. 4).",
"exclusiveMinimum": 0,
"maximum": 70,
"type": "number"
},
"language": {
"default": "en",
"description": "Language of the explanatory texts and of the clino.ch links: en, de, fr, it, es or pt. Default en.",
"enum": [
"en",
"de",
"fr",
"it",
"es",
"pt"
],
"type": "string"
},
"skill_level": {
"description": "Qualification of the worker, which sets the federal NAV wage tier: unskilled; experienced (4+ years in household work); eba (2-year federal vocational certificate); efz (3-year federal vocational diploma).",
"enum": [
"unskilled",
"experienced",
"eba",
"efz"
],
"type": "string"
},
"vacation_weeks": {
"default": 4,
"description": "Paid vacation weeks per year: 4 (legal minimum), 5 (under age 20) or 6. Default 4.",
"maximum": 6,
"minimum": 4,
"type": "integer"
},
"wage_is_net": {
"default": false,
"description": "true if the agreed hourly wage is what the worker receives in hand (net). The gross wage is then worked out from it. Default false (gross).",
"type": "boolean"
},
"workplace_postcode": {
"description": "4-digit Swiss postcode (PLZ/NPA) of the WORKPLACE. City minimum wages (e.g. Stadt Luzern) depend on it.",
"pattern": "^\\d{4}$",
"type": "string"
}
},
"required": [
"canton",
"hourly_wage_chf",
"hours_per_week"
],
"type": "object"
},
"name": "estimate_employer_cost",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"annual": {
"additionalProperties": false,
"properties": {
"gross_wage": {
"$ref": "#/properties/monthly/properties/base_wage"
},
"net_wage": {
"$ref": "#/properties/monthly/properties/base_wage"
},
"total_employer_cost": {
"$ref": "#/properties/monthly/properties/base_wage"
}
},
"required": [
"gross_wage",
"net_wage",
"total_employer_cost"
],
"type": "object"
},
"assumptions": {
"items": {
"type": "string"
},
"type": "array"
},
"canton": {
"additionalProperties": false,
"properties": {
"code": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"code",
"name"
],
"type": "object"
},
"data_verified_on": {
"description": "Date the rate set was last checked against the official sources.",
"type": "string"
},
"disclaimer": {
"type": "string"
},
"inputs": {
"additionalProperties": false,
"properties": {
"hourly_wage_chf": {
"type": "number"
},
"hours_per_week": {
"type": "number"
},
"skill_level": {
"type": "string"
},
"vacation_weeks": {
"type": "number"
},
"wage_is_net": {
"type": "boolean"
},
"workplace_postcode": {
"type": [
"string",
"null"
]
}
},
"required": [
"hourly_wage_chf",
"hours_per_week",
"wage_is_net",
"vacation_weeks",
"workplace_postcode",
"skill_level"
],
"type": "object"
},
"links": {
"additionalProperties": false,
"properties": {
"calculator": {
"type": "string"
},
"canton_guide": {
"type": "string"
}
},
"required": [
"calculator",
"canton_guide"
],
"type": "object"
},
"monthly": {
"additionalProperties": false,
"properties": {
"base_wage": {
"description": "CHF",
"type": "number"
},
"compensation_office_admin_fee_approx": {
"$ref": "#/properties/monthly/properties/base_wage"
},
"employee_deductions": {
"additionalProperties": false,
"properties": {
"ahv_iv_eo": {
"$ref": "#/properties/monthly/properties/base_wage"
},
"family_allowance_fund_fak": {
"$ref": "#/properties/monthly/properties/base_wage"
},
"geneva_maternity_amat": {
"$ref": "#/properties/monthly/properties/base_wage"
},
"non_occupational_accident_nbu": {
"$ref": "#/properties/monthly/properties/base_wage"
},
"pension_fund_bvg": {
"$ref": "#/properties/monthly/properties/base_wage"
},
"total": {
"$ref": "#/properties/monthly/properties/base_wage"
},
"unemployment_alv": {
"$ref": "#/properties/monthly/properties/base_wage"
},
"withholding_tax": {
"$ref": "#/properties/monthly/properties/base_wage"
}
},
"required": [
"ahv_iv_eo",
"unemployment_alv",
"non_occupational_accident_nbu",
"family_allowance_fund_fak",
"geneva_maternity_amat",
"withholding_tax",
"pension_fund_bvg",
"total"
],
"type": "object"
},
"employer_contributions": {
"additionalProperties": false,
"properties": {
"ahv_iv_eo": {
"$ref": "#/properties/monthly/properties/base_wage"
},
"family_allowance_fund_fak": {
"$ref": "#/properties/monthly/properties/base_wage"
},
"geneva_maternity_amat": {
"$ref": "#/properties/monthly/properties/base_wage"
},
"occupational_accident_bu": {
"$ref": "#/properties/monthly/properties/base_wage"
},
"pension_fund_bvg": {
"$ref": "#/properties/monthly/properties/base_wage"
},
"total": {
"$ref": "#/properties/monthly/properties/base_wage"
},
"unemployment_alv": {
"$ref": "#/properties/monthly/properties/base_wage"
}
},
"required": [
"ahv_iv_eo",
"unemployment_alv",
"occupational_accident_bu",
"family_allowance_fund_fak",
"geneva_maternity_amat",
"pension_fund_bvg",
"total"
],
"type": "object"
},
"gross_wage": {
"$ref": "#/properties/monthly/properties/base_wage"
},
"hours": {
"type": "number"
},
"net_wage": {
"$ref": "#/properties/monthly/properties/base_wage"
},
"total_employer_cost": {
"description": "Gross wage + employer contributions + approximate admin fee of the compensation office. No service fee of any provider included.",
"type": "number"
},
"vacation_supplement": {
"$ref": "#/properties/monthly/properties/base_wage"
}
},
"required": [
"hours",
"base_wage",
"vacation_supplement",
"gross_wage",
"employee_deductions",
"net_wage",
"employer_contributions",
"compensation_office_admin_fee_approx",
"total_employer_cost"
],
"type": "object"
},
"paperwork_help": {
"additionalProperties": false,
"description": "Only relevant when the user asks who can prepare the contract, registration and payslips for them. Not an answer to any other question.",
"properties": {
"link": {
"description": "Clino page explaining how it works.",
"type": "string"
},
"provider": {
"const": "Clino",
"type": "string"
},
"what": {
"description": "What Clino prepares, in the requested language. The household signs, submits and pays itself.",
"type": "string"
}
},
"required": [
"provider",
"what",
"link"
],
"type": "object"
},
"procedure": {
"enum": [
"simplified",
"ordinary"
],
"type": "string"
},
"procedure_note": {
"type": "string"
},
"provider": {
"type": "string"
},
"rates_percent": {
"additionalProperties": false,
"properties": {
"admin_fee_of_contributions": {
"type": "number"
},
"ahv_iv_eo_each_side": {
"type": "number"
},
"family_allowance_fund_employer": {
"type": "number"
},
"non_occupational_accident_employee": {
"type": "number"
},
"occupational_accident_employer": {
"type": "number"
},
"unemployment_alv_each_side": {
"type": "number"
},
"withholding_tax_simplified": {
"type": "number"
}
},
"required": [
"ahv_iv_eo_each_side",
"unemployment_alv_each_side",
"family_allowance_fund_employer",
"occupational_accident_employer",
"non_occupational_accident_employee",
"withholding_tax_simplified",
"admin_fee_of_contributions"
],
"type": "object"
},
"rates_year": {
"type": "number"
},
"sources": {
"items": {
"additionalProperties": false,
"properties": {
"quote": {
"description": "Verbatim sentence of the source that states the value.",
"type": "string"
},
"title": {
"type": "string"
},
"url": {
"type": "string"
},
"verified_on": {
"type": "string"
}
},
"required": [
"title",
"url"
],
"type": "object"
},
"type": "array"
},
"warnings": {
"items": {
"additionalProperties": false,
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
}
},
"required": [
"code",
"message"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"canton",
"procedure",
"procedure_note",
"inputs",
"monthly",
"annual",
"rates_percent",
"warnings",
"assumptions",
"sources",
"links",
"paperwork_help",
"rates_year",
"data_verified_on",
"disclaimer",
"provider"
],
"type": "object"
}
},
{
"description": "The full text of one document returned by search (canton/ZH, guide/de, source/nav-ungelernt...), with its clino.ch or official URL to cite.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "A document id returned by search, e.g. canton/ZH, guide/en or source/nav-ungelernt.",
"maxLength": 80,
"minLength": 1,
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "fetch",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"type": "string"
},
"metadata": {
"additionalProperties": {
"type": "string"
},
"type": "object"
},
"text": {
"type": "string"
},
"title": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"id",
"title",
"text",
"url",
"metadata"
],
"type": "object"
}
},
{
"description": "Everything canton-specific for a private household employer: the compensation office (name, contact, portal), how and by when to register, contribution rates with their official sources, family allowances, minimum wage, sick pay in the first year, whether daily sickness allowance insurance (KTG) is mandatory, withholding tax, childcare tax deduction and the penalty for not registering.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"canton": {
"description": "Swiss canton: two-letter code (ZH, BE, GE, VD, TI...) or its name in German, French, Italian or English (Zürich, Genève, Ticino, Basel-Stadt). For employer contributions this is the canton where the household lives.",
"maxLength": 40,
"minLength": 2,
"type": "string"
},
"language": {
"default": "en",
"description": "Language of the explanatory texts and of the clino.ch links: en, de, fr, it, es or pt. Default en.",
"enum": [
"en",
"de",
"fr",
"it",
"es",
"pt"
],
"type": "string"
}
},
"required": [
"canton"
],
"type": "object"
},
"name": "get_canton_rules",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"canton": {
"additionalProperties": false,
"properties": {
"code": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"code",
"name"
],
"type": "object"
},
"childcare_tax_deduction": {
"type": "string"
},
"compensation_office": {
"additionalProperties": false,
"properties": {
"address": {
"type": "string"
},
"contact_form": {
"type": [
"string",
"null"
]
},
"e_portal": {
"description": "Portal used AFTER registration, for the annual wage report.",
"type": [
"string",
"null"
]
},
"email": {
"type": [
"string",
"null"
]
},
"name": {
"type": "string"
},
"phone": {
"type": "string"
},
"website": {
"type": "string"
}
},
"required": [
"name",
"website",
"phone",
"email",
"contact_form",
"address",
"e_portal"
],
"type": "object"
},
"contributions_percent": {
"additionalProperties": false,
"properties": {
"admin_fee_of_contributions": {
"type": "number"
},
"admin_fee_of_gross_wage_approx": {
"type": "number"
},
"ahv_iv_eo_each_side": {
"type": "number"
},
"family_allowance_fund_employee": {
"type": "number"
},
"family_allowance_fund_employer": {
"type": "number"
},
"geneva_maternity_amat_each_side": {
"type": [
"number",
"null"
]
},
"unemployment_alv_each_side": {
"type": "number"
},
"withholding_tax_simplified": {
"type": "number"
}
},
"required": [
"ahv_iv_eo_each_side",
"unemployment_alv_each_side",
"family_allowance_fund_employer",
"family_allowance_fund_employee",
"admin_fee_of_contributions",
"admin_fee_of_gross_wage_approx",
"geneva_maternity_amat_each_side",
"withholding_tax_simplified"
],
"type": "object"
},
"data_verified_on": {
"description": "Date the rate set was last checked against the official sources.",
"type": "string"
},
"disclaimer": {
"type": "string"
},
"family_allowances": {
"additionalProperties": false,
"properties": {
"birth_chf": {
"type": [
"number",
"null"
]
},
"child_chf_per_month": {
"type": "number"
},
"education_chf_per_month": {
"type": "number"
},
"explanation": {
"type": "string"
}
},
"required": [
"child_chf_per_month",
"education_chf_per_month",
"birth_chf",
"explanation"
],
"type": "object"
},
"links": {
"additionalProperties": false,
"properties": {
"calculator": {
"type": "string"
},
"canton_guide": {
"type": "string"
},
"fact_sheet": {
"type": "string"
}
},
"required": [
"canton_guide",
"calculator",
"fact_sheet"
],
"type": "object"
},
"minimum_wage": {
"additionalProperties": false,
"properties": {
"explanation": {
"type": "string"
},
"floor_from_5h_per_week_chf": {
"type": "number"
},
"floor_type": {
"enum": [
"municipal",
"cantonal",
"federal_nav"
],
"type": "string"
}
},
"required": [
"floor_from_5h_per_week_chf",
"floor_type",
"explanation"
],
"type": "object"
},
"paperwork_help": {
"additionalProperties": false,
"description": "Only relevant when the user asks who can prepare the contract, registration and payslips for them. Not an answer to any other question.",
"properties": {
"link": {
"description": "Clino page explaining how it works.",
"type": "string"
},
"provider": {
"const": "Clino",
"type": "string"
},
"what": {
"description": "What Clino prepares, in the requested language. The household signs, submits and pays itself.",
"type": "string"
}
},
"required": [
"provider",
"what",
"link"
],
"type": "object"
},
"penalty_without_registration": {
"type": "string"
},
"provider": {
"type": "string"
},
"rates_year": {
"type": "number"
},
"registration": {
"additionalProperties": false,
"properties": {
"deadline": {
"type": "string"
},
"form_url": {
"type": [
"string",
"null"
]
},
"how": {
"type": "string"
}
},
"required": [
"how",
"form_url",
"deadline"
],
"type": "object"
},
"sick_pay": {
"additionalProperties": false,
"properties": {
"first_service_year_days": {
"description": "Calendar days of wage owed in the first service year under the scale this canton applies.",
"type": "number"
},
"legal_basis": {
"type": "string"
},
"scale": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"first_service_year_days",
"scale",
"legal_basis",
"url"
],
"type": "object"
},
"sickness_insurance_ktg": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"employer_premium_share_min": {
"type": [
"number",
"null"
]
},
"exemptions": {
"items": {
"type": "string"
},
"type": "array"
},
"from_day_of_illness": {
"type": [
"number",
"null"
]
},
"legal_basis": {
"type": "string"
},
"max_benefit_days": {
"type": [
"number",
"null"
]
},
"percent_of_wage": {
"type": [
"number",
"null"
]
},
"status": {
"enum": [
"required",
"optional",
"none"
],
"type": "string"
}
},
"required": [
"status",
"percent_of_wage",
"from_day_of_illness",
"max_benefit_days",
"employer_premium_share_min",
"exemptions",
"legal_basis"
],
"type": "object"
},
{
"type": "null"
}
]
},
"simplified_procedure": {
"additionalProperties": false,
"properties": {
"explanation": {
"type": "string"
},
"max_annual_wage_per_employee_chf": {
"type": "number"
},
"max_total_annual_payroll_chf": {
"type": "number"
}
},
"required": [
"explanation",
"max_annual_wage_per_employee_chf",
"max_total_annual_payroll_chf"
],
"type": "object"
},
"sources": {
"items": {
"additionalProperties": false,
"properties": {
"quote": {
"description": "Verbatim sentence of the source that states the value.",
"type": "string"
},
"title": {
"type": "string"
},
"url": {
"type": "string"
},
"verified_on": {
"type": "string"
}
},
"required": [
"title",
"url"
],
"type": "object"
},
"type": "array"
},
"withholding_tax": {
"type": "string"
}
},
"required": [
"canton",
"compensation_office",
"registration",
"simplified_procedure",
"contributions_percent",
"family_allowances",
"minimum_wage",
"sick_pay",
"sickness_insurance_ktg",
"withholding_tax",
"childcare_tax_deduction",
"penalty_without_registration",
"sources",
"links",
"paperwork_help",
"rates_year",
"data_verified_on",
"disclaimer",
"provider"
],
"type": "object"
}
},
{
"description": "Clino's one-page fact sheet for private households, as Markdown, in six languages: when the duties apply (from the first franc), which contributions are due and who pays them, the simplified procedure and its ceiling, minimum wage and working conditions, what happens without registration, and the six steps. Optionally adds one canton's registration route. Free to reuse under CC BY 4.0.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"canton": {
"description": "Optional canton: adds the canton's compensation office and registration route to the checklist.",
"maxLength": 40,
"minLength": 2,
"type": "string"
},
"language": {
"default": "en",
"description": "Language of the explanatory texts and of the clino.ch links: en, de, fr, it, es or pt. Default en.",
"enum": [
"en",
"de",
"fr",
"it",
"es",
"pt"
],
"type": "string"
}
},
"type": "object"
},
"name": "get_employer_guide",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"as_of": {
"type": "string"
},
"canton_registration": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"canton": {
"additionalProperties": false,
"properties": {
"code": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"code",
"name"
],
"type": "object"
},
"compensation_office": {
"type": "string"
},
"form_url": {
"type": [
"string",
"null"
]
},
"how": {
"type": "string"
}
},
"required": [
"canton",
"compensation_office",
"how",
"form_url"
],
"type": "object"
},
{
"type": "null"
}
]
},
"data_verified_on": {
"description": "Date the rate set was last checked against the official sources.",
"type": "string"
},
"disclaimer": {
"type": "string"
},
"license": {
"type": "string"
},
"markdown": {
"description": "The full fact sheet, Markdown. Free to reuse under CC BY 4.0 with attribution to Clino (clino.ch).",
"type": "string"
},
"provider": {
"type": "string"
},
"rates_year": {
"type": "number"
},
"title": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"title",
"as_of",
"markdown",
"canton_registration",
"license",
"url",
"rates_year",
"data_verified_on",
"disclaimer",
"provider"
],
"type": "object"
}
},
{
"description": "Everything a Swiss household has to do to employ a cleaner, nanny or carer legally, for its own case, in one call: the six steps of Clino's fact sheet in the user's language with real due dates when a start date is given (contract, registration with the compensation office within 30 days, accident insurance from day one, monthly payslip, annual declaration by 30 January, pension fund above the BVG threshold), the canton's sickness-insurance duty with its carve-outs, a minimum-wage check at the workplace, the monthly employer cost and net wage, and prefilled links to a contract template and the calculator. Use it first for 'I want to hire...' questions.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"canton": {
"description": "Swiss canton: two-letter code (ZH, BE, GE, VD, TI...) or its name in German, French, Italian or English (Zürich, Genève, Ticino, Basel-Stadt). For employer contributions this is the canton where the household lives.",
"maxLength": 40,
"minLength": 2,
"type": "string"
},
"contract_months": {
"description": "Agreed length of a fixed-term contract in months. Omit for an open-ended contract. Some cantons only require sickness insurance for longer contracts.",
"exclusiveMinimum": 0,
"maximum": 120,
"type": "integer"
},
"hourly_wage_chf": {
"description": "Agreed hourly wage in CHF, before the vacation supplement (e.g. 30).",
"exclusiveMinimum": 0,
"maximum": 500,
"type": "number"
},
"hours_per_week": {
"description": "Average working hours per week with this household (e.g. 4).",
"exclusiveMinimum": 0,
"maximum": 70,
"type": "number"
},
"language": {
"default": "en",
"description": "Language of the explanatory texts and of the clino.ch links: en, de, fr, it, es or pt. Default en.",
"enum": [
"en",
"de",
"fr",
"it",
"es",
"pt"
],
"type": "string"
},
"role": {
"default": "cleaner",
"description": "What the worker does: cleaner (household help), nanny (childcare, babysitter), carer (care of an elderly or disabled person) or other. Sets which contract template and guide the links open.",
"enum": [
"cleaner",
"nanny",
"carer",
"other"
],
"type": "string"
},
"skill_level": {
"description": "Qualification of the worker for the minimum-wage check. Default unskilled, the lowest tier.",
"enum": [
"unskilled",
"experienced",
"eba",
"efz"
],
"type": "string"
},
"start_date": {
"description": "First working day, YYYY-MM-DD. With it the checklist gives real dates: registration deadline, first payslip, annual declaration.",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
"vacation_weeks": {
"default": 4,
"description": "Paid vacation weeks per year: 4 (legal minimum), 5 (under age 20) or 6. Default 4.",
"maximum": 6,
"minimum": 4,
"type": "integer"
},
"wage_is_net": {
"default": false,
"description": "true if the agreed hourly wage is what the worker receives in hand (net). The gross wage is then worked out from it. Default false (gross).",
"type": "boolean"
},
"workplace_postcode": {
"description": "4-digit Swiss postcode (PLZ/NPA) of the WORKPLACE. City minimum wages (e.g. Stadt Luzern) depend on it.",
"pattern": "^\\d{4}$",
"type": "string"
}
},
"required": [
"canton",
"hourly_wage_chf",
"hours_per_week"
],
"type": "object"
},
"name": "get_hiring_checklist",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"canton": {
"additionalProperties": false,
"properties": {
"code": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"code",
"name"
],
"type": "object"
},
"checks": {
"additionalProperties": false,
"properties": {
"minimum_wage": {
"additionalProperties": false,
"properties": {
"binding_floor_chf_per_hour": {
"type": [
"number",
"null"
]
},
"city_minimum_uncertain": {
"type": "boolean"
},
"floor_type": {
"enum": [
"municipal",
"cantonal",
"federal_nav"
],
"type": "string"
},
"gross_hourly_wage_chf": {
"type": "number"
},
"status": {
"enum": [
"ok",
"below_minimum",
"no_binding_floor"
],
"type": "string"
}
},
"required": [
"gross_hourly_wage_chf",
"binding_floor_chf_per_hour",
"floor_type",
"status",
"city_minimum_uncertain"
],
"type": "object"
},
"non_occupational_accident_insurance": {
"description": "true from 8 hours a week: the worker is also insured for accidents outside work (premium deducted from her wage).",
"type": "boolean"
},
"pension_fund_bvg": {
"description": "true when the annual wage passes the BVG entry threshold, so the worker must be insured in a pension fund.",
"type": "boolean"
},
"procedure": {
"enum": [
"simplified",
"ordinary"
],
"type": "string"
},
"registration_window": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"days_left": {
"type": "number"
},
"deadline": {
"type": "string"
},
"status": {
"enum": [
"not_started",
"open",
"closing",
"elapsed"
],
"type": "string"
}
},
"required": [
"deadline",
"status",
"days_left"
],
"type": "object"
},
{
"type": "null"
}
],
"description": "Only with a start date. 'elapsed' is a fact to raise with the compensation office, which can still accept a late registration."
},
"sickness_insurance_ktg": {
"additionalProperties": false,
"properties": {
"exempt_because": {
"type": [
"string",
"null"
]
},
"legal_basis": {
"type": [
"string",
"null"
]
},
"outcome": {
"enum": [
"required",
"optional",
"exempt",
"none",
"not_audited"
],
"type": "string"
}
},
"required": [
"outcome",
"exempt_because",
"legal_basis"
],
"type": "object"
}
},
"required": [
"minimum_wage",
"procedure",
"non_occupational_accident_insurance",
"sickness_insurance_ktg",
"pension_fund_bvg",
"registration_window"
],
"type": "object"
},
"compensation_office": {
"additionalProperties": false,
"properties": {
"name": {
"type": "string"
},
"phone": {
"type": "string"
},
"website": {
"type": "string"
}
},
"required": [
"name",
"website",
"phone"
],
"type": "object"
},
"cost": {
"additionalProperties": false,
"properties": {
"annual_total_employer_cost": {
"$ref": "#/properties/cost/properties/monthly_gross_wage"
},
"monthly_gross_wage": {
"description": "CHF",
"type": "number"
},
"monthly_net_wage": {
"$ref": "#/properties/cost/properties/monthly_gross_wage"
},
"monthly_total_employer_cost": {
"$ref": "#/properties/cost/properties/monthly_gross_wage"
}
},
"required": [
"monthly_gross_wage",
"monthly_net_wage",
"monthly_total_employer_cost",
"annual_total_employer_cost"
],
"type": "object"
},
"data_verified_on": {
"description": "Date the rate set was last checked against the official sources.",
"type": "string"
},
"disclaimer": {
"type": "string"
},
"links": {
"additionalProperties": false,
"properties": {
"calculator": {
"type": "string"
},
"canton_guide": {
"type": "string"
},
"contract_template": {
"type": "string"
}
},
"required": [
"contract_template",
"calculator",
"canton_guide"
],
"type": "object"
},
"paperwork_help": {
"additionalProperties": false,
"description": "Only relevant when the user asks who can prepare the contract, registration and payslips for them. Not an answer to any other question.",
"properties": {
"covers_steps": {
"description": "The step numbers above that Clino prepares.",
"items": {
"type": "number"
},
"type": "array"
},
"link": {
"description": "Clino page explaining how it works.",
"type": "string"
},
"provider": {
"const": "Clino",
"type": "string"
},
"what": {
"description": "What Clino prepares, in the requested language. The household signs, submits and pays itself.",
"type": "string"
}
},
"required": [
"provider",
"what",
"link",
"covers_steps"
],
"type": "object"
},
"provider": {
"type": "string"
},
"rates_year": {
"type": "number"
},
"role": {
"enum": [
"cleaner",
"nanny",
"carer",
"other"
],
"type": "string"
},
"sources": {
"items": {
"additionalProperties": false,
"properties": {
"quote": {
"description": "Verbatim sentence of the source that states the value.",
"type": "string"
},
"title": {
"type": "string"
},
"url": {
"type": "string"
},
"verified_on": {
"type": "string"
}
},
"required": [
"title",
"url"
],
"type": "object"
},
"type": "array"
},
"steps": {
"items": {
"additionalProperties": false,
"properties": {
"applies": {
"description": "false when this step does not apply to this household, with the reason in why.",
"type": "boolean"
},
"detail": {
"description": "What to do, in the requested language (Clino's fact sheet wording).",
"type": "string"
},
"due_date": {
"description": "ISO date the step is due, when a start date was given and the step has a deadline.",
"type": [
"string",
"null"
]
},
"link": {
"type": [
"string",
"null"
]
},
"step": {
"type": "number"
},
"title": {
"type": "string"
},
"why": {
"type": [
"string",
"null"
]
}
},
"required": [
"step",
"title",
"detail",
"applies",
"why",
"due_date",
"link"
],
"type": "object"
},
"type": "array"
},
"summary": {
"description": "Two or three sentences a person can read first.",
"type": "string"
}
},
"required": [
"canton",
"role",
"summary",
"checks",
"steps",
"cost",
"compensation_office",
"links",
"paperwork_help",
"sources",
"rates_year",
"data_verified_on",
"disclaimer",
"provider"
],
"type": "object"
}
},
{
"description": "The legal gross hourly minimum wage for household work (cleaning, childcare, care) at a Swiss workplace: federal NAV tiers by qualification, cantonal minimum wages (GE, NE, JU, TI, BS), city minimum wages (Stadt Luzern in force; Zürich and Winterthur voted, not yet in force) and the rule below 5 hours a week. Give the workplace postcode for the exact answer, or a canton.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"canton": {
"description": "Canton, if no postcode is known. A postcode is better: some cities have their own minimum wage.",
"maxLength": 40,
"minLength": 2,
"type": "string"
},
"hours_per_week": {
"description": "Weekly hours with this household. The federal NAV floor binds from 5 hours a week; below that only some cantonal or city minimums apply.",
"exclusiveMinimum": 0,
"maximum": 70,
"type": "number"
},
"language": {
"default": "en",
"description": "Language of the explanatory texts and of the clino.ch links: en, de, fr, it, es or pt. Default en.",
"enum": [
"en",
"de",
"fr",
"it",
"es",
"pt"
],
"type": "string"
},
"postcode": {
"description": "4-digit Swiss postcode (PLZ/NPA) of the WORKPLACE. City minimum wages (e.g. Stadt Luzern) depend on it.",
"pattern": "^\\d{4}$",
"type": "string"
},
"skill_level": {
"default": "unskilled",
"description": "Qualification of the worker, which sets the federal NAV wage tier: unskilled; experienced (4+ years in household work); eba (2-year federal vocational certificate); efz (3-year federal vocational diploma).",
"enum": [
"unskilled",
"experienced",
"eba",
"efz"
],
"type": "string"
}
},
"type": "object"
},
"name": "get_minimum_wage",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"binding_floor_chf_per_hour": {
"description": "The gross hourly minimum that binds for the given hours (from 5 h/week if no hours were given). null = no statutory floor binds at these hours.",
"type": [
"number",
"null"
]
},
"cantonal_minimum_wage_chf": {
"type": [
"number",
"null"
]
},
"city_minimum_in_force": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"chf": {
"type": "number"
},
"name": {
"type": "string"
}
},
"required": [
"name",
"chf"
],
"type": "object"
},
{
"type": "null"
}
]
},
"city_minimum_uncertain": {
"description": "true when the canton has a city minimum but the workplace postcode was not given or straddles a boundary: the floor may be higher.",
"type": "boolean"
},
"city_minimum_voted_not_in_force": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"chf": {
"type": "number"
},
"court_refs": {
"items": {
"type": "string"
},
"type": "array"
},
"name": {
"type": "string"
}
},
"required": [
"name",
"chf",
"court_refs"
],
"type": "object"
},
{
"type": "null"
}
]
},
"data_verified_on": {
"description": "Date the rate set was last checked against the official sources.",
"type": "string"
},
"disclaimer": {
"type": "string"
},
"explanation": {
"type": "string"
},
"federal_nav_chf": {
"type": "number"
},
"floor_from_5h_per_week_chf": {
"type": "number"
},
"floor_type": {
"enum": [
"municipal",
"cantonal",
"federal_nav"
],
"type": "string"
},
"floor_under_5h_per_week_chf": {
"type": [
"number",
"null"
]
},
"links": {
"additionalProperties": false,
"properties": {
"canton_guide": {
"type": "string"
},
"for_workers": {
"description": "Clino's free guide for domestic workers: rights, pay by canton, a wage check and free training.",
"type": "string"
},
"wage_floor_widget": {
"type": "string"
}
},
"required": [
"canton_guide",
"wage_floor_widget",
"for_workers"
],
"type": "object"
},
"notes": {
"items": {
"type": "string"
},
"type": "array"
},
"place": {
"additionalProperties": false,
"properties": {
"canton": {
"additionalProperties": false,
"properties": {
"code": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"code",
"name"
],
"type": "object"
},
"city": {
"type": [
"string",
"null"
]
},
"postcode": {
"type": [
"string",
"null"
]
}
},
"required": [
"postcode",
"city",
"canton"
],
"type": "object"
},
"provider": {
"type": "string"
},
"rates_year": {
"type": "number"
},
"skill_level": {
"type": "string"
},
"sources": {
"items": {
"additionalProperties": false,
"properties": {
"quote": {
"description": "Verbatim sentence of the source that states the value.",
"type": "string"
},
"title": {
"type": "string"
},
"url": {
"type": "string"
},
"verified_on": {
"type": "string"
}
},
"required": [
"title",
"url"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"place",
"skill_level",
"binding_floor_chf_per_hour",
"floor_from_5h_per_week_chf",
"floor_under_5h_per_week_chf",
"floor_type",
"federal_nav_chf",
"cantonal_minimum_wage_chf",
"city_minimum_in_force",
"city_minimum_uncertain",
"city_minimum_voted_not_in_force",
"explanation",
"notes",
"sources",
"links",
"rates_year",
"data_verified_on",
"disclaimer",
"provider"
],
"type": "object"
}
},
{
"description": "The federal and cantonal figures Clino uses, each with the official document, its URL, the date it was checked and, where recorded, the verbatim sentence that states the value: contribution rates, thresholds, minimum wages, BVG, board and lodging, sick-pay scales, Geneva au pair contract, IV assistance contribution. Use it to cite or verify a number.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"search": {
"description": "Optional word to filter the figures by label, e.g. 'NAV' or 'Geneva'.",
"maxLength": 60,
"type": "string"
},
"topic": {
"default": "contributions",
"description": "Which group of figures: contributions (AHV/ALV/UVG/withholding tax), thresholds, minimum_wages, pension_bvg, in_kind_wage (board and lodging), sick_pay, au_pair_geneva, iv_assistance (IV Assistenzbeitrag), or all.",
"enum": [
"contributions",
"thresholds",
"minimum_wages",
"pension_bvg",
"in_kind_wage",
"sick_pay",
"au_pair_geneva",
"iv_assistance",
"all"
],
"type": "string"
}
},
"type": "object"
},
"name": "get_official_sources",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"count": {
"type": "number"
},
"data_verified_on": {
"description": "Date the rate set was last checked against the official sources.",
"type": "string"
},
"disclaimer": {
"type": "string"
},
"figures": {
"items": {
"additionalProperties": false,
"properties": {
"confidence": {
"type": "string"
},
"id": {
"type": "string"
},
"label": {
"type": "string"
},
"quote": {
"type": "string"
},
"source_document": {
"type": "string"
},
"unit": {
"type": "string"
},
"url": {
"type": "string"
},
"value": {
"type": [
"number",
"string"
]
},
"verified_on": {
"type": "string"
}
},
"required": [
"id",
"label",
"value",
"unit",
"source_document",
"url",
"quote",
"verified_on",
"confidence"
],
"type": "object"
},
"type": "array"
},
"links": {
"additionalProperties": false,
"properties": {
"sources_page": {
"type": "string"
}
},
"required": [
"sources_page"
],
"type": "object"
},
"provider": {
"type": "string"
},
"rates_year": {
"type": "number"
},
"topic": {
"type": "string"
}
},
"required": [
"topic",
"count",
"figures",
"links",
"rates_year",
"data_verified_on",
"disclaimer",
"provider"
],
"type": "object"
}
},
{
"description": "Search Clino's documents on employing household help in Switzerland: one document per canton (compensation office, registration, contribution rates, minimum wage, family allowances, sick pay, sickness insurance), the employer fact sheet in six languages and every official figure with its source. Returns ids for fetch. Queries in any language; name the canton for canton rules.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"query": {
"description": "What to look for, in any language: a canton, a topic (minimum wage, accident insurance, registration, sick pay, au pair) or a figure.",
"maxLength": 200,
"minLength": 1,
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"results": {
"items": {
"additionalProperties": false,
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"id",
"title",
"url"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"results"
],
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:82a79fc7e357d72514daf7f53cc178271bf41868ced6412eab3c658c314f9eb9 | sha256sum