{
  "type": "object",
  "properties": {
    "canton": {
      "type": "string",
      "minLength": 2,
      "maxLength": 40,
      "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."
    },
    "hourly_wage_chf": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 500,
      "description": "Agreed hourly wage in CHF, before the vacation supplement (e.g. 30)."
    },
    "hours_per_week": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 70,
      "description": "Average working hours per week with this household (e.g. 4)."
    },
    "role": {
      "type": "string",
      "enum": [
        "cleaner",
        "nanny",
        "carer",
        "other"
      ],
      "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."
    },
    "start_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "First working day, YYYY-MM-DD. With it the checklist gives real dates: registration deadline, first payslip, annual declaration."
    },
    "contract_months": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 120,
      "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."
    },
    "wage_is_net": {
      "type": "boolean",
      "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)."
    },
    "vacation_weeks": {
      "type": "integer",
      "minimum": 4,
      "maximum": 6,
      "default": 4,
      "description": "Paid vacation weeks per year: 4 (legal minimum), 5 (under age 20) or 6. Default 4."
    },
    "workplace_postcode": {
      "type": "string",
      "pattern": "^\\d{4}$",
      "description": "4-digit Swiss postcode (PLZ/NPA) of the WORKPLACE. City minimum wages (e.g. Stadt Luzern) depend on it."
    },
    "skill_level": {
      "type": "string",
      "enum": [
        "unskilled",
        "experienced",
        "eba",
        "efz"
      ],
      "description": "Qualification of the worker for the minimum-wage check. Default unskilled, the lowest tier."
    },
    "language": {
      "type": "string",
      "enum": [
        "en",
        "de",
        "fr",
        "it",
        "es",
        "pt"
      ],
      "default": "en",
      "description": "Language of the explanatory texts and of the clino.ch links: en, de, fr, it, es or pt. Default en."
    }
  },
  "required": [
    "canton",
    "hourly_wage_chf",
    "hours_per_week"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "get_hiring_checklist input",
  "x-source": "https://clino.ch/mcp (MCP tools/list, 2026-11-04, verbatim inputSchema)"
}