> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ontime.hosai.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Tool catalog

> Every production MCP tool, grouped as in the code, with the permission it needs and whether it writes.

71 tools. **What your credential sees is a subset** — a tool whose permission you lack is not listed at all, and listing and calling share the same check, so an invisible tool is an uncallable one.

<Note>
  The **Access** column is `read` for a tool annotated read-only and **`write`** for one that mutates. Read-only credentials see no `write` tools at all.
</Note>

## Context

| Tool            | Permission | Access | Purpose                                                                                                                   |
| --------------- | ---------- | :----: | ------------------------------------------------------------------------------------------------------------------------- |
| `ontime_whoami` | —          |  read  | Who you are: identity kind, bound employee, organization, permissions, read-only flag, current date. **Call this first.** |

## Attendance

| Tool                           | Permission         |   Access  | Purpose                                      |
| ------------------------------ | ------------------ | :-------: | -------------------------------------------- |
| `ontime_attendance_my_day`     | `attendance:punch` |    read   | Your own day: punches, hours, status.        |
| `ontime_attendance_my_month`   | `attendance:punch` |    read   | Your own month calendar and totals.          |
| `ontime_attendance_punch`      | `attendance:punch` | **write** | Clock in or out as yourself.                 |
| `ontime_attendance_live`       | `attendance:read`  |    read   | The live board: who is in, KPIs, punch feed. |
| `ontime_attendance_day_report` | `attendance:read`  |    read   | One date across the whole organization.      |

## Leave

| Tool                       | Permission      |   Access  | Purpose                                                 |
| -------------------------- | --------------- | :-------: | ------------------------------------------------------- |
| `ontime_leave_overview`    | `leave:read`    |    read   | Your balances and recent requests.                      |
| `ontime_leave_quote`       | `leave:read`    |    read   | What a request would cost: working days, balance after. |
| `ontime_leave_request`     | `leave:write`   | **write** | File leave **for yourself**.                            |
| `ontime_leave_request_for` | `leave:approve` | **write** | File leave **on behalf of** an employee.                |
| `ontime_leave_requests`    | `leave:approve` |    read   | The leave queue in your scope.                          |
| `ontime_leave_get`         | `leave:read`    |    read   | One request in detail.                                  |
| `ontime_leave_decide`      | `leave:approve` | **write** | Approve or reject.                                      |
| `ontime_leave_types`       | `leave:read`    |    read   | The organization's leave catalog.                       |

## Regularization

| Tool                                 | Permission               |   Access  | Purpose                                          |
| ------------------------------------ | ------------------------ | :-------: | ------------------------------------------------ |
| `ontime_regularization_request`      | `regularization:write`   | **write** | File a correction **for yourself**.              |
| `ontime_regularization_request_for`  | `regularization:approve` | **write** | File **on behalf of** an employee.               |
| `ontime_regularization_queue`        | `regularization:approve` |    read   | The correction queue in your scope.              |
| `ontime_regularization_get`          | `regularization:read`    |    read   | One request, with its forensic trail.            |
| `ontime_regularization_decide`       | `regularization:approve` | **write** | Approve or reject.                               |
| `ontime_regularization_bulk_approve` | `regularization:approve` | **write** | Advance several at once; reports per-item skips. |

## Overtime

| Tool                      | Permission         |   Access  | Purpose                     |
| ------------------------- | ------------------ | :-------: | --------------------------- |
| `ontime_overtime_request` | `overtime:request` | **write** | Claim overtime for a day.   |
| `ontime_overtime_mine`    | `overtime:request` |    read   | Your own overtime requests. |
| `ontime_overtime_decide`  | `overtime:approve` | **write** | Approve or reject.          |

## Manager

| Tool                       | Permission      | Access | Purpose                                            |
| -------------------------- | --------------- | :----: | -------------------------------------------------- |
| `ontime_team_today`        | `team:read`     |  read  | Live status of your direct reports.                |
| `ontime_team_member`       | `team:read`     |  read  | One report in detail.                              |
| `ontime_pending_approvals` | `leave:approve` |  read  | Everything waiting on you, across all three kinds. |
| `ontime_team_report`       | `team:read`     |  read  | Team attendance aggregates for a period.           |

## Payroll

| Tool                         | Permission      |   Access  | Purpose                                                                   |
| ---------------------------- | --------------- | :-------: | ------------------------------------------------------------------------- |
| `ontime_payroll_overview`    | `payroll:read`  |    read   | Cycles and their stages. **Read this before advancing anything.**         |
| `ontime_payroll_start_cycle` | `payroll:write` | **write** | Start a cycle for a period.                                               |
| `ontime_payroll_advance`     | `payroll:write` | **write** | Move to the next stage: freeze, inputs, calculate, approve.               |
| `ontime_payroll_review`      | `payroll:read`  |    read   | The run lines with anomaly flags.                                         |
| `ontime_payroll_override`    | `payroll:write` | **write** | Set a line-level override.                                                |
| `ontime_payroll_disburse`    | `payroll:write` | **write** | ⚠️ **Confirm-gated.** Creates payslips, closes the cycle. Not reversible. |
| `ontime_payslips`            | `payroll:read`  |    read   | Browse payslips organization-wide.                                        |
| `ontime_my_pay`              | `pay:read`      |    read   | Your own year-to-date and payslip list.                                   |
| `ontime_my_payslip`          | `pay:read`      |    read   | One of your own payslips.                                                 |
| `ontime_compensation_view`   | `payroll:read`  |    read   | An employee's salary structure and revisions.                             |

## Compliance

| Tool                          | Permission         |   Access  | Purpose                                                                      |
| ----------------------------- | ------------------ | :-------: | ---------------------------------------------------------------------------- |
| `ontime_compliance_overview`  | `compliance:read`  |    read   | Filings, Form 16 status, register status.                                    |
| `ontime_compliance_generate`  | `compliance:write` | **write** | Derive the month's filings.                                                  |
| `ontime_compliance_file`      | `compliance:write` | **write** | ⚠️ **Confirm-gated.** Mark a return filed with an acknowledgement reference. |
| `ontime_compliance_registers` | `compliance:read`  |    read   | The five statutory registers and their status.                               |
| `ontime_form16_generate`      | `compliance:write` | **write** | ⚠️ **Confirm-gated.** Generate the Form 16 batch for a financial year.       |

## Employees

| Tool                     | Permission      | Access | Purpose                                                        |
| ------------------------ | --------------- | :----: | -------------------------------------------------------------- |
| `ontime_employee_search` | `employee:read` |  read  | Find employees by name or code. **Resolve names to IDs here.** |
| `ontime_employee_get`    | `employee:read` |  read  | One employee's record.                                         |

## Organization administration

| Tool                       | Permission         |   Access  | Purpose                          |
| -------------------------- | ------------------ | :-------: | -------------------------------- |
| `ontime_employee_create`   | `employee:write`   | **write** | Create an employee.              |
| `ontime_employee_update`   | `employee:write`   | **write** | Update an employee.              |
| `ontime_department_list`   | `department:read`  |    read   | Departments.                     |
| `ontime_department_upsert` | `department:write` | **write** | Create or update a department.   |
| `ontime_location_list`     | `location:read`    |    read   | Locations, with their geofences. |
| `ontime_location_upsert`   | `location:write`   | **write** | Create or update a location.     |
| `ontime_role_list`         | `role:read`        |    read   | Roles and their permissions.     |
| `ontime_role_upsert`       | `role:write`       | **write** | Create or update a role.         |

<Warning>
  `ontime_role_upsert` can edit **any** role, including the one the acting employee holds. An agent with `role:write` can escalate its own privileges. Bind carefully.
</Warning>

## Scheduling administration

| Tool                           | Permission       |   Access  | Purpose                                                                                  |
| ------------------------------ | ---------------- | :-------: | ---------------------------------------------------------------------------------------- |
| `ontime_shift_template_upsert` | `shift:write`    | **write** | Create or update a shift template.                                                       |
| `ontime_roster_set_cell`       | `roster:write`   | **write** | Assign one roster cell (draft).                                                          |
| `ontime_roster_copy_week`      | `roster:write`   | **write** | Copy a week's roster into another as a draft.                                            |
| `ontime_roster_publish_week`   | `roster:publish` | **write** | Publish a week — makes it visible and effective.                                         |
| `ontime_swap_overview`         | `swap:read`      |    read   | The swap board.                                                                          |
| `ontime_swap_create`           | `swap:write`     | **write** | Request a swap or post an open shift.                                                    |
| `ontime_swap_decide`           | `swap:approve`   | **write** | Approve or reject; approval rewrites roster cells.                                       |
| `ontime_holiday_upsert`        | `holiday:write`  | **write** | Add or edit a holiday.                                                                   |
| `ontime_holiday_delete`        | `holiday:write`  | **write** | ⚠️ **Confirm-gated.** Removing a holiday changes how days reconcile — and therefore pay. |
| `ontime_report_list`           | `report:read`    |    read   | The reports library.                                                                     |
| `ontime_report_run`            | `report:read`    |    read   | Run a report and return its rows.                                                        |

## Schedule (read)

| Tool                     | Permission        | Access | Purpose                               |
| ------------------------ | ----------------- | :----: | ------------------------------------- |
| `ontime_roster_week`     | `roster:read`     |  read  | A week's roster grid.                 |
| `ontime_shift_templates` | `shift:read`      |  read  | The shift templates.                  |
| `ontime_holidays`        | `holiday:read`    |  read  | The holiday calendar.                 |
| `ontime_dashboard`       | `attendance:read` |  read  | Organization KPIs, trends and alerts. |

## Inbox

| Tool                             | Permission          |   Access  | Purpose                  |
| -------------------------------- | ------------------- | :-------: | ------------------------ |
| `ontime_notifications`           | `notification:read` |    read   | The notification feed.   |
| `ontime_notifications_mark_read` | `notification:read` | **write** | Mark notifications read. |

## Generic discovery

| Tool     | Permission      | Access | Purpose                                                                           |
| -------- | --------------- | :----: | --------------------------------------------------------------------------------- |
| `search` | `employee:read` |  read  | Search across the organization. Deliberately bare-named for hosts that expect it. |
| `fetch`  | `employee:read` |  read  | Fetch one record by identifier.                                                   |

## The four confirm-gated tools

<Warning>
  An agent must get an **explicit human "yes" in the conversation** before calling any of these:

  * `ontime_payroll_disburse`
  * `ontime_compliance_file`
  * `ontime_form16_generate`
  * `ontime_holiday_delete`

  A general instruction such as "run payroll" is **not** consent to disburse. See [Security](/ai-mcp/security).
</Warning>

## Self-service versus on-behalf

Several domains are two tools rather than one with an optional employee parameter. Choosing wrongly is the most common integration error:

| For yourself                          | On behalf of someone else           |
| ------------------------------------- | ----------------------------------- |
| `ontime_leave_request`                | `ontime_leave_request_for`          |
| `ontime_regularization_request`       | `ontime_regularization_request_for` |
| `ontime_attendance_my_day`            | `ontime_attendance_day_report`      |
| `ontime_my_pay` / `ontime_my_payslip` | `ontime_payslips`                   |
