---
name: "hr_save_settings"
area: "hr"
title: "Change the HR settings"
price: "$0.001"
method: "POST"
url: "https://api.conecto.chat/v1/tools/hr_save_settings"
mcp_server: "https://api.conecto.chat/mcp/hr"
auth: "Authorization: Bearer <conecto_sk_ key>"
docs_url: "https://conecto.chat/tools/hr/hr_save_settings"
---

# Change the HR settings (`hr_save_settings`)

Sets the work calendar: working days, hours per day, leave year, time zone, and one location's public holidays for a year.

Set the work calendar. working_days: ISO weekday numbers, 1 (Monday) to 7 (Sunday); default 1 to 5. hours_per_day: default 8, used to show leave in hours. leave_year_start: the month the leave year starts, default 1. time_zone: an IANA name; null follows the invoice profile's or the calendar's. holidays: one location's public holidays for one calendar year, replacing that location's list for that year (no location: everyone's; an empty list clears it). Leave already requested keeps the days it was counted with.

Price: $0.001 a call. A call that fails costs nothing.

## Use it when

Before the first leave request, or when holidays for a new year are known.

## Say this to your agent

> Add Hamburg's public holidays for the rest of the year: Reformation Day and the two Christmas days.

## Inputs

| Name | Type | Required | Description | Allowed values | Default |
|---|---|---|---|---|---|
| `working_days` | array of integers | no | 1 to 7 items. |  |  |
| `hours_per_day` | number or string | no | Up to 6 characters. |  |  |
| `leave_year_start` | integer | no | 1 to 12. |  |  |
| `time_zone` | string or null | no | Up to 64 characters. |  |  |
| `holidays` | object | no |  |  |  |
| `holidays.year` | integer | yes, when `holidays` is given | The calendar year the holidays are in. 2,000 to 2,100. |  |  |
| `holidays.location` | string | no | Blank or left out: everyone. Up to 120 characters. |  |  |
| `holidays.days` | array of objects | yes, when `holidays` is given | Up to 60 items. |  |  |
| `holidays.days[].date` | string | yes, in each item of `holidays.days` | YYYY-MM-DD (matches ^\\d{4}-\\d{2}-\\d{2}$) |  |  |
| `holidays.days[].name` | string | yes, in each item of `holidays.days` | 1 to 120 characters. |  |  |

## Example

Written for Hansen & Voss, a restaurant-equipment wholesaler in Hamburg with 60 staff.

MCP: call `hr_save_settings` on the MCP server `https://api.conecto.chat/mcp/hr` with these arguments:

```json
{
  "holidays": {
    "year": 2026,
    "location": "Hamburg",
    "days": [
      {
        "date": "2026-10-03",
        "name": "German Unity Day"
      },
      {
        "date": "2026-10-31",
        "name": "Reformation Day"
      },
      {
        "date": "2026-12-25",
        "name": "Christmas Day"
      },
      {
        "date": "2026-12-26",
        "name": "Second Christmas Day"
      }
    ]
  }
}
```

REST:

```bash
curl https://api.conecto.chat/v1/tools/hr_save_settings \
  -H "Authorization: Bearer $CONECTO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"holidays": {"year": 2026, "location": "Hamburg", "days": [{"date": "2026-10-03", "name": "German Unity Day"}, {"date": "2026-10-31", "name": "Reformation Day"}, {"date": "2026-12-25", "name": "Christmas Day"}, {"date": "2026-12-26", "name": "Second Christmas Day"}]}}'
```

## Response

```json
{
  "call_id": "5f0c8a2e-3b7d-4c1e-9a64-2d8e1f7b0c93",
  "tool": "hr_save_settings",
  "status": "succeeded",
  "replayed": false,
  "cost_usd": "$0.001",
  "balance_usd": "$19.75",
  "result": {
    "settings": {
      "working_days": [
        1,
        2
      ],
      "working_day_names": [
        "Monday",
        "Tuesday"
      ],
      "hours_per_day": "8",
      "leave_year_start": 1,
      "time_zone": "Europe/Berlin",
      "time_zone_own": true,
      "today": "2026-10-14",
      "leave_year": {
        "year": 2026,
        "from": "2026-01-01",
        "to": "2026-12-31"
      }
    },
    "leave_types": [
      {
        "name": "Sick",
        "tracked": false,
        "paid": true,
        "annual_days": "0",
        "accrual": "yearly",
        "carry_over_max": "0",
        "archived": false
      },
      {
        "name": "Vacation",
        "tracked": true,
        "paid": true,
        "annual_days": "28",
        "accrual": "yearly",
        "carry_over_max": "5",
        "archived": false
      }
    ],
    "holidays": {
      "year": 2026,
      "location": "Hamburg",
      "days": [
        {
          "date": "2026-10-03",
          "name": "German Unity Day",
          "location": "Hamburg"
        },
        {
          "date": "2026-10-31",
          "name": "Reformation Day",
          "location": "Hamburg"
        }
      ]
    },
    "checklists": [
      {
        "name": "Warehouse onboarding",
        "kind": "onboarding",
        "items": [
          {
            "title": "Hand over the warehouse keys",
            "owner": "manager",
            "due_days": -1
          },
          {
            "title": "Safety briefing for the forklift and the racks",
            "owner": "hr",
            "due_days": 0
          }
        ]
      }
    ]
  }
}
```

`result`: The settings as they now are, in the shape hr_get_settings returns.

## Errors

| Code | Status | When | Fix |
|---|---|---|---|
| `invalid_input` | 400 | Nothing to change was given, the time zone is unknown, or a holiday is not valid. | Send a setting or holidays; zones like Europe/Berlin. |
| `conflict` | 409 | Another call changed the same holidays at the same moment. | Call again. |

The refusals every tool can give (401 key, 402 balance, 429 limits) are on the errors page: https://conecto.chat/docs/errors.md

## Related

- [hr_save_people](https://conecto.chat/tools/hr/hr_save_people.md): Adds people or changes them, up to 100 at a time, all or none: names, emails, job, department, location, manager, dates and allowances. $1.00 per person added.
- [hr_list_people](https://conecto.chat/tools/hr/hr_list_people.md): People by last name, everyone who hasn't left by default, filtered by status, department, location, manager, type or words. Free up to 1,000,000 reads a month.
- [hr_get_person](https://conecto.chat/tools/hr/hr_get_person.md): Everything about one person: details, leave balances for a year, pending and upcoming leave, documents, open tasks and direct reports. Free up to 1,000,000 reads a month.
- [hr_delete_person](https://conecto.chat/tools/hr/hr_delete_person.md): Erases a person for good with their leave, tasks and document records; their files stay in the store. Free.
- [hr_get_settings](https://conecto.chat/tools/hr/hr_get_settings.md): The working days, hours, leave year, time zone, leave types, public holidays and checklists. Free up to 1,000,000 reads a month.
- [hr_save_leave_type](https://conecto.chat/tools/hr/hr_save_leave_type.md): Adds or changes a kind of time off: annual days, monthly or yearly accrual, carry-over, paid and tracked. $0.001 a call.
- [hr_adjust_leave](https://conecto.chat/tools/hr/hr_adjust_leave.md): Adds days to, or takes days off, one person's balance of a tracked leave type, with the reason. $0.01 a call.
- [hr_request_leave](https://conecto.chat/tools/hr/hr_request_leave.md): Asks for time off for someone, counting working days less holidays; it waits for a decision unless approved at once. $0.01 a call.
- [hr_decide_leave](https://conecto.chat/tools/hr/hr_decide_leave.md): Approves or declines a pending leave request, or cancels one that is pending or approved. $0.01 a call.
- [hr_list_leave](https://conecto.chat/tools/hr/hr_list_leave.md): Leave requests, latest start first, by person, status, type or dates. Free up to 1,000,000 reads a month.
- [hr_who_is_out](https://conecto.chat/tools/hr/hr_who_is_out.md): Who is off in a period (today by default), with each leave and its days, plus public holidays and people on long leave. Free up to 1,000,000 reads a month.
- [hr_save_checklist](https://conecto.chat/tools/hr/hr_save_checklist.md): Adds or changes an onboarding or offboarding checklist: items with an owner and a due day relative to the start or last day. $0.001 a call.
- [hr_start_checklist](https://conecto.chat/tools/hr/hr_start_checklist.md): Turns a checklist into tasks for one person, each due relative to their start date or last day. $0.01 a call.
- [hr_tasks](https://conecto.chat/tools/hr/hr_tasks.md): Checklist tasks, soonest due first: open, overdue, done or all, for one person, one owner or a date. Free up to 1,000,000 reads a month.
- [hr_complete_task](https://conecto.chat/tools/hr/hr_complete_task.md): Marks a checklist task done, or opens it again. $0.01 a call.
- [hr_save_document](https://conecto.chat/tools/hr/hr_save_document.md): Keeps a file from the store on a person's record (a contract, an ID, a certificate), or changes or removes it. $0.01 a call.
- [hr_report](https://conecto.chat/tools/hr/hr_report.md): Headcount, joiners and leavers, time off taken, or everyone's leave balances. Free up to 1,000,000 reads a month.
- [hr_dashboard_link](https://conecto.chat/tools/hr/hr_dashboard_link.md): A one-time link to HR at a glance: who is out, leave to decide, open tasks, and who starts or leaves soon. Free up to 1,000,000 reads a month.
- [hr_save_policy](https://conecto.chat/tools/hr/hr_save_policy.md): Keeps a policy people must read and confirm, like an AI use policy; a changed text is a new version. $0.001 a call.
- [hr_send_policy](https://conecto.chat/tools/hr/hr_send_policy.md): Emails each person in a policy's scope a one-time link to read and confirm its current version. $0.02 per email sent.
- [hr_record_training](https://conecto.chat/tools/hr/hr_record_training.md): Records a training someone completed, like AI literacy, with its date, hours, certificate and expiry. $0.01 a call.
- [hr_policy_status](https://conecto.chat/tools/hr/hr_policy_status.md): Who confirmed each policy's current version, and who holds a valid training of each kind. Free up to 1,000,000 reads a month.
