Every action this server offers, with what it takes and a worked example. Generated from the server itself, so it is always what is actually running.
People and the directory
The roster, the jobs people hold, and who the company works with.
find_peoplereads only
Find people
Employees matching a name or employee number. Returns ids for the other tools — never guess an employee id. An empty search lists the first page of everybody.
Someone asks: “Find Juan dela Cruz and Maria Santos.”
Input
{
"search": "dela cruz"
}
What comes back
1 person:
Dela Cruz, Juan (EMP-001) · id 5f1c2a9e-3b7d-4c21-9e4a-1d2f3c4b5a60
Structured content
Show the structured answer
{
"people": [
{
"employeePublicId": "5f1c2a9e-3b7d-4c21-9e4a-1d2f3c4b5a60",
"name": "Dela Cruz, Juan",
"employeeNumber": "EMP-001"
}
]
}
employeereads only
An employee's record
One person's record: names, contact details, their current position and employment, and their salary rates where the caller may see them. Government identifiers and bank details come back only to a caller allowed to see them — do not repeat them unless asked for that field.
Someone asks: “What is Juan's position and when did he start?”
Input
{
"employeePublicId": "5f1c2a9e-3b7d-4c21-9e4a-1d2f3c4b5a60"
}
What comes back
Dela Cruz, Juan (EMP-001)
Position: Steel Fitter · Project-based · since 2024-03-04
Contact: juan.delacruz@example.com · +63 917 000 0001
Structured content
Show the structured answer
{
"employee": {
"publicId": "5f1c2a9e-3b7d-4c21-9e4a-1d2f3c4b5a60",
"name": "Dela Cruz, Juan",
"employeeNumber": "EMP-001",
"…": "…"
},
"employment": {
"position": "Steel Fitter",
"employmentType": "Project-based",
"startDate": "2024-03-04"
},
"rates": null
}
headcountreads only
Headcount
How many employees there are, how many are currently employed, and how many are on payroll.
Takes no input.
Someone asks: “How many people do we have?”
Input
{}
What comes back
214 employee record(s): 198 currently employed, 191 on payroll.
Structured content
Show the structured answer
{
"headcount": {
"total": 214,
"active": 198,
"onPayroll": 191
}
}
find_jobsreads only
Find projects and cost centers
Projects (read as "Customer - Project") and cost centers (by name) that hours may be charged to now. Matches the customer, the project or cost center name, or its code. Returns the ids plan_time_entries takes.
Someone asks: “Which Acme projects can I charge to?”
Input
{
"search": "acme",
"kind": "project"
}
What comes back
2 matches:
project · Acme Steel - Bridge retrofit (ALPHA) · id 0c9d8e7f-6a5b-4c3d-9e2f-1a0b9c8d7e6f
project · Acme Steel - Warehouse fit-out (BRAVO) · id 1b2c3d4e-5f6a-4b7c-8d9e-0f1a2b3c4d5e
Structured content
Show the structured answer
{
"jobs": [
{
"kind": "project",
"publicId": "0c9d8e7f-6a5b-4c3d-9e2f-1a0b9c8d7e6f",
"label": "Acme Steel - Bridge retrofit",
"code": "ALPHA"
},
{
"kind": "project",
"publicId": "1b2c3d4e-5f6a-4b7c-8d9e-0f1a2b3c4d5e",
"label": "Acme Steel - Warehouse fit-out",
"code": "BRAVO"
}
]
}
customersreads only
Customers
Customers with their code, contact person and whether they are active or archived.
Someone asks: “Who are our customers?”
Input
{
"search": "acme"
}
What comes back
1 customer:
Acme Steel Corporation (ACME) · Ana Reyes · ana@acme.test · +63 2 8555 0101 · id 2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e
Structured content
Show the structured answer
{
"customers": [
{
"publicId": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
"name": "Acme Steel Corporation",
"code": "ACME",
"contactName": "Ana Reyes",
"…": "…"
}
]
}
suppliersreads only
Suppliers
Suppliers with what they supply, their contact person and payment terms. The catalogue of items and prices is in the suite itself.
Someone asks: “Which suppliers do we buy steel from?”
Input
{
"search": "steel"
}
What comes back
1 supplier:
Northgate Steel Supply (NGS) · Structural steel and fabrication · Ben Cruz · terms 30 days net · id 3c4d5e6f-7a8b-4c9d-8e0f-1a2b3c4d5e6f
Structured content
Show the structured answer
{
"suppliers": [
{
"publicId": "3c4d5e6f-7a8b-4c9d-8e0f-1a2b3c4d5e6f",
"name": "Northgate Steel Supply",
"code": "NGS",
"description": "Structural steel and fabrication",
"…": "…"
}
]
}
Time and attendance
Timesheets, the time clock, and what has not been encoded yet.
timesheetreads only
Read a timesheet
One person's timesheet days over a date range: status, hours per project or cost center, overtime claimed, remarks, and whether the day is draft, submitted, approved or locked for payroll. Leave employeePublicId out for the signed-in person's own.
Someone asks: “Show me Juan's timesheet for the first cutoff of October.”
Input
{
"employeePublicId": "5f1c2a9e-3b7d-4c21-9e4a-1d2f3c4b5a60",
"from": "2026-10-01",
"to": "2026-10-15"
}
What comes back
Dela Cruz, Juan (EMP-001), 2026-10-01 to 2026-10-15: 3 days, 24.00h
2026-10-13 · Present · Acme Steel - Bridge retrofit 8.00h · approved
2026-10-14 · Present · Acme Steel - Bridge retrofit 8.00h (+2.00 OT) · submitted · from the time clock
2026-10-15 · Present · Administration 8.00h · yard day · draft
Structured content
Show the structured answer
{
"employee": {
"employeePublicId": "5f1c2a9e-3b7d-4c21-9e4a-1d2f3c4b5a60",
"name": "Dela Cruz, Juan",
"employeeNumber": "EMP-001"
},
"days": [
{
"publicId": "c1d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f",
"date": "2026-10-14",
"dayStatus": "present",
"dayStatusLabel": "Present",
"status": "submitted",
"source": "punches",
"totalHours": "8.00",
"totalOvertimeHours": "2.00",
"remarks": null,
"allocations": [
{
"projectPublicId": "0c9d8e7f-6a5b-4c3d-9e2f-1a0b9c8d7e6f",
"costCenterPublicId": null,
"label": "Acme Steel - Bridge retrofit",
"hours": "8.00",
"overtimeHours": "2.00"
}
]
},
"…"
]
}
plan_time_entriesreads only
Plan time entries
Step one of logging time for people. Resolves every employee, date and project or cost center, says which days already exist and would be replaced, and returns a planId. Show the plan to the person; call commit_time_entries with the planId only after they agree. One entry is one line of a day; several entries on the same employee and date become one day with several lines. A day that already exists is replaced whole by the lines given here.
Someone asks: “Log 8 hours on the bridge for Juan and Maria yesterday, Juan did 1 hour overtime.”
Input
{
"entries": [
{
"employeePublicId": "5f1c2a9e-3b7d-4c21-9e4a-1d2f3c4b5a60",
"date": "2026-10-14",
"projectPublicId": "0c9d8e7f-6a5b-4c3d-9e2f-1a0b9c8d7e6f",
"hours": 8,
"overtimeHours": 1
},
{
"employeePublicId": "7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d",
"date": "2026-10-14",
"projectPublicId": "0c9d8e7f-6a5b-4c3d-9e2f-1a0b9c8d7e6f",
"hours": 8
}
]
}
What comes back
Plan kQ3x9Lm2pA: 2 days for 2 people, 1 replacing a day already encoded.
Dela Cruz, Juan (EMP-001) · 2026-10-14 · Present · Acme Steel - Bridge retrofit 8.00h (+1.00 OT) — replaces the Present day already there (8.00h, from the time clock)
Santos, Maria (EMP-007) · 2026-10-14 · Present · Acme Steel - Bridge retrofit 8.00h
Show this to the person. If they agree, call commit_time_entries with planId "kQ3x9Lm2pA".
Structured content
Show the structured answer
{
"planId": "kQ3x9Lm2pA",
"days": [
"Dela Cruz, Juan (EMP-001) · 2026-10-14 · …",
"Santos, Maria (EMP-007) · 2026-10-14 · …"
],
"replacing": 1
}
commit_time_entrieschanges data
Commit time entries
Step two: writes the days exactly as plan_time_entries showed them. Takes the planId from that plan. A plan can be committed once and expires after fifteen minutes.
Someone asks: “Yes, go ahead.”
Input
{
"planId": "kQ3x9Lm2pA"
}
What comes back
2 days saved.
saved · Dela Cruz, Juan (EMP-001) · 2026-10-14 · Present · Acme Steel - Bridge retrofit 8.00h (+1.00 OT) — replaces the Present day already there (8.00h, from the time clock)
saved · Santos, Maria (EMP-007) · 2026-10-14 · Present · Acme Steel - Bridge retrofit 8.00h
Structured content
Show the structured answer
{
"saved": 2,
"refused": []
}
attendancereads only
Attendance
Who worked which day over a range, with hours, overtime claimed and approved, the day's status and any leave on it. Narrow by people, project or cost center. Totals come back with the rows.
Someone asks: “Who worked on the bridge last week?”
Input
{
"from": "2026-10-06",
"to": "2026-10-10",
"projectPublicId": "0c9d8e7f-6a5b-4c3d-9e2f-1a0b9c8d7e6f",
"limit": 3
}
What comes back
Attendance 2026-10-06 to 2026-10-10: 3 days.
2026-10-06 · Dela Cruz, Juan (EMP-001) · Present · 8.00h · ALPHA
2026-10-07 · Dela Cruz, Juan (EMP-001) · Present · 8.00h (+2.00 OT, 2.00 approved) · ALPHA
2026-10-07 · Santos, Maria (EMP-007) · Present · 4.00h · ALPHA · on leave: Vacation leave
Structured content
Show the structured answer
{
"rows": [
"…three AttendanceRow rows…"
],
"summary": {
"…": "hours, overtime and head counts for everything matched"
},
"totalRows": 3
}
unfiled_overtimereads only
Overtime claimed but not filed
Overtime hours sitting on timesheets with no overtime request covering them, so nobody has approved them and payroll will not pay them. One row per person, day and job.
Someone asks: “Is there overtime nobody has filed a request for?”
Input
{
"from": "2026-10-01",
"to": "2026-10-15"
}
What comes back
1 row of overtime with no request:
2026-10-14 · Dela Cruz, Juan (EMP-001) · Acme Steel - Bridge retrofit · claimed 2.00h, filed 0.00h, unfiled 2.00h
Structured content
Show the structured answer
{
"rows": [
{
"employeePublicId": "5f1c2a9e-3b7d-4c21-9e4a-1d2f3c4b5a60",
"employeeName": "Dela Cruz, Juan",
"employeeNumber": "EMP-001",
"recordDate": "2026-10-14",
"targetLabel": "Acme Steel - Bridge retrofit",
"claimedHours": "2.00",
"requestedHours": "0.00",
"unfiledHours": "2.00",
"isLocked": false
}
]
}
timesheet_gapsreads only
Timesheet completeness
How much of a pay period is encoded: who has days missing, so the period can be closed. Name the period, or any date inside it.
Someone asks: “Is the current cutoff fully encoded?”
Input
{
"payPeriodPublicIds": [
"6f7a8b9c-0d1e-4f2a-8b3c-4d5e6f7a8b9c"
]
}
What comes back
2026-10-01 → 2026-10-15 (Semi-monthly) · encoded up to 2026-10-13 · 198 person(s) on the roster
Structured content
Show the structured answer
{
"periods": [
{
"payPeriodPublicId": "6f7a8b9c-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
"scheduleName": "Semi-monthly",
"startDate": "2026-10-01",
"endDate": "2026-10-15",
"throughDate": "2026-10-13",
"hasStarted": true,
"people": 198
}
]
}
clock_daysreads only
Time clock days
Days built from people's own clock-in and clock-out punches: first in, last out, hours worked and on break, whether the day is still open, how it was verified, and whether a timekeeper has approved it. `flaggedOnly` narrows to days the suite has flagged for review.
Someone asks: “Show me the clock days waiting for approval.”
Input
{
"from": "2026-10-13",
"to": "2026-10-15",
"status": "pending"
}
What comes back
1 of 1 clock day:
2026-10-14 · Dela Cruz, Juan (EMP-001) · 07:58 to 17:04 · worked 8.10h, break 1.00h · pending · passkey, selfie
Structured content
Show the structured answer
{
"days": [
{
"employeePublicId": "5f1c2a9e-3b7d-4c21-9e4a-1d2f3c4b5a60",
"employeeName": "Dela Cruz, Juan",
"recordDate": "2026-10-14",
"firstIn": "07:58",
"lastOut": "17:04",
"workedHours": 8.1,
"breakHours": 1,
"approval": {
"status": "pending"
},
"verifications": [
"passkey",
"selfie"
],
"flags": []
}
],
"total": 1
}
my_clockreads only
My clock
Whether the signed-in person may clock in or out right now, which it would be, and the company's current time and date. Clocking itself is done in the app, which can read the device's location.
Takes no input.
Someone asks: “Can I clock out yet?”
Input
{}
What comes back
2026-10-15 17:12 (Asia/Manila).
You may clock: the next punch would be out.
Clocking in or out is done in the suite itself, which checks where you are.
Structured content
Show the structured answer
{
"clock": {
"canClock": true,
"unavailableReason": null,
"today": "2026-10-15",
"localTime": "17:12",
"timeZone": "Asia/Manila",
"nextKind": "out",
"anyLocation": false,
"…": "…"
}
}
The calendar
Holidays, cutoffs, and who is away.
holidaysreads only
Holidays
The holiday calendar: the date, the name, which kind of holiday it is and the pay multipliers that apply when it is worked and when it is not.
Someone asks: “What holidays are left this year?”
Input
{
"from": "2026-11-01",
"to": "2026-12-31"
}
What comes back
2 holidays:
2026-11-01 · All Saints' Day · Special Non-Working Day · worked ×1.3000, not worked ×0.0000
2026-12-25 · Christmas Day · Regular Holiday · worked ×2.0000, not worked ×1.0000
Structured content
Show the structured answer
{
"holidays": [
"…two HolidayDto rows…"
]
}
pay_periodsreads only
Pay periods
Pay periods with their dates, pay date and status, so a period can be named by id elsewhere. Use `onDate` to find the period that covers a day.
Someone asks: “Which cutoff covers the 10th?”
Input
{
"onDate": "2026-10-10"
}
What comes back
1 pay period:
2026-10-01 → 2026-10-15 · Semi-monthly (semi_monthly) · pays 2026-10-20 · open · id 6f7a8b9c-0d1e-4f2a-8b3c-4d5e6f7a8b9c
Structured content
Show the structured answer
{
"periods": [
{
"publicId": "6f7a8b9c-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
"scheduleName": "Semi-monthly",
"startDate": "2026-10-01",
"endDate": "2026-10-15",
"payDate": "2026-10-20",
"status": "open",
"…": "…"
}
]
}
who_is_outreads only
Who is on leave
Approved and pending leave over a range, day by day, with a summary of how many people are out and how many days are approved or waiting. The planning question before assigning work.
Someone asks: “Who is on leave next week?”
Input
{
"from": "2026-10-19",
"to": "2026-10-23"
}
What comes back
2026-10-19 to 2026-10-23: 2 person(s) out, 3.00 day(s) approved, 2 waiting on 1 request.
By type: Vacation leave 1.00, Sick leave 2.00.
2026-10-20 · Santos, Maria (EMP-007) · Sick leave · Whole day · pending
2026-10-21 · Santos, Maria (EMP-007) · Sick leave · Whole day · pending
2026-10-22 · Dela Cruz, Juan (EMP-001) · Vacation leave · Whole day · approved
Structured content
Show the structured answer
{
"days": [
"…three LeaveCalendarDay rows…"
],
"summary": {
"peopleOut": 2,
"daysApproved": "3.00",
"daysPending": 2,
"requestsPending": 1,
"byType": [
{
"leaveType": "Vacation leave",
"days": "1.00"
},
{
"leaveType": "Sick leave",
"days": "2.00"
}
]
}
}
Requests and approvals
Filing leave and overtime, and deciding on what others filed.
leave_requestsreads only
Leave requests
Leave requests over a range, with who, which type, how many days, the status and the reason. Leave the employee out for everybody the caller may see.
Someone asks: “Show me the pending leave requests.”
Input
{
"status": "pending"
}
What comes back
1 of 1 leave request:
2026-10-20 → 2026-10-21 · Santos, Maria (EMP-007) · 2.00 day(s) Sick leave · pending · "Flu" · id 8c9d0e1f-2a3b-4c4d-9e5f-6a7b8c9d0e1f
Structured content
Show the structured answer
{
"requests": [
"…one LeaveRequestDto…"
],
"total": 1
}
overtime_requestsreads only
Overtime requests
Overtime requests over a range: the day worked, hours requested and approved, the job they are charged to, the status and the reason.
Someone asks: “What overtime has Juan filed this month?”
Input
{
"employeePublicId": "5f1c2a9e-3b7d-4c21-9e4a-1d2f3c4b5a60",
"from": "2026-10-01",
"to": "2026-10-31"
}
What comes back
1 of 1 overtime request:
2026-10-14 · Dela Cruz, Juan (EMP-001) · 1.00h requested, 1.00h approved · Acme Steel - Bridge retrofit · approved · "Finishing the deck pour" · id 4e5f6a7b-8c9d-4e0f-9a1b-2c3d4e5f6a7b
Structured content
Show the structured answer
{
"requests": [
"…one OvertimeRequestDto…"
],
"total": 1
}
my_requestsreads only
My requests
The signed-in person's own leave and overtime requests, whatever their status.
Takes no input.
Someone asks: “What have I filed?”
Input
{}
What comes back
Leave:
2026-10-22 · Reyes, Ana (EMP-014) · 1.00 day(s) Vacation leave · approved · "Family matter" · id 9d0e1f2a-3b4c-4d5e-8f6a-7b8c9d0e1f2a
Structured content
Show the structured answer
{
"leave": [
"…one LeaveRequestDto…"
],
"overtime": []
}
leave_typesreads only
Leave types and day values
The leave types that may be filed and whether each is paid, plus the day values (a whole day, a half day). file_leave needs ids from here.
Takes no input.
Someone asks: “What kinds of leave can I file?”
Input
{}
What comes back
Leave types:
Vacation leave (paid) · id a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d
Sick leave (paid) · id b2c3d4e5-6f7a-4b8c-9d0e-1f2a3b4c5d6e
Leave without pay (unpaid) · id c3d4e5f6-7a8b-4c9d-8e0f-1a2b3c4d5e6f
Day values:
Whole day = 1.00 of a day · id d4e5f6a7-8b9c-4d0e-9f1a-2b3c4d5e6f7a
Half day = 0.50 of a day · id e5f6a7b8-9c0d-4e1f-8a2b-3c4d5e6f7a8b
Structured content
Show the structured answer
{
"leaveTypes": [
"…LeaveTypeOption rows…"
],
"dayValues": [
"…LeaveValueOption rows…"
]
}
file_leavechanges data
File a leave request
Files a leave request for approval. With no employeePublicId it files for the signed-in person; with one it files on their behalf, which needs the right to file for others. Get the type and day-value ids from leave_types. One day entry per calendar day of leave.
Someone asks: “File two days of sick leave for Maria, the 20th and 21st, she has the flu.”
Input
{
"employeePublicId": "7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d",
"leaveTypePublicId": "b2c3d4e5-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
"startDate": "2026-10-20",
"endDate": "2026-10-21",
"reason": "Flu",
"days": [
{
"leaveDate": "2026-10-20",
"leaveValuePublicId": "d4e5f6a7-8b9c-4d0e-9f1a-2b3c4d5e6f7a"
},
{
"leaveDate": "2026-10-21",
"leaveValuePublicId": "d4e5f6a7-8b9c-4d0e-9f1a-2b3c4d5e6f7a"
}
]
}
What comes back
Filed. 2026-10-20 → 2026-10-21 · Santos, Maria (EMP-007) · 2.00 day(s) Sick leave · pending · "Flu" · id 8c9d0e1f-2a3b-4c4d-9e5f-6a7b8c9d0e1f
Structured content
Show the structured answer
{
"request": {
"publicId": "8c9d0e1f-2a3b-4c4d-9e5f-6a7b8c9d0e1f",
"status": "pending",
"totalDays": "2.00",
"…": "…"
}
}
file_overtimechanges data
File an overtime request
Files an overtime request for approval, with the hours split across the projects or cost centers they were worked on. With no employeePublicId it files for the signed-in person. Each line is charged to exactly one project or cost center.
Someone asks: “File 2 hours of overtime for myself yesterday on the bridge, we were finishing the pour.”
Input
{
"requestDate": "2026-10-14",
"reason": "Finishing the deck pour",
"lines": [
{
"projectPublicId": "0c9d8e7f-6a5b-4c3d-9e2f-1a0b9c8d7e6f",
"requestedHours": 2
}
]
}
What comes back
Filed. 2026-10-14 · Reyes, Ana (EMP-014) · 2.00h requested · Acme Steel - Bridge retrofit · pending · "Finishing the deck pour" · id 0e1f2a3b-4c5d-4e6f-8a7b-8c9d0e1f2a3b
Structured content
Show the structured answer
{
"request": {
"publicId": "0e1f2a3b-4c5d-4e6f-8a7b-8c9d0e1f2a3b",
"status": "pending",
"requestedHours": "2.00",
"targetsLabel": "Acme Steel - Bridge retrofit",
"…": "…"
}
}
cancel_requestchanges data
Cancel a request
Withdraws a leave or overtime request that has not been decided, or one the person is allowed to withdraw after approval. The suite refuses anything else and says why.
Someone asks: “Withdraw that leave request, she is coming in after all.”
Input
{
"kind": "leave",
"publicId": "8c9d0e1f-2a3b-4c4d-9e5f-6a7b8c9d0e1f"
}
What comes back
Cancelled the leave for Santos, Maria. It is now cancelled.
Structured content
Show the structured answer
{
"request": {
"publicId": "8c9d0e1f-2a3b-4c4d-9e5f-6a7b8c9d0e1f",
"status": "cancelled",
"…": "…"
}
}
my_approvalsreads only
My approvals
Everything waiting on the signed-in person's decision, oldest first: overtime, leave, deduction requests and advances, incentive grants, quotations and invoices — each kind only if their role may approve it. A BLOCKED item cannot be decided yet; a note is context, not a block.
Someone asks: “What is waiting for me?”
Input
{
"kinds": [
"overtime",
"leave"
]
}
What comes back
2 requests waiting, oldest first; 1 cannot be decided yet.
#1 overtime · Dela Cruz, Juan (EMP-001) · 2026-10-14 · 1.00h overtime · on Acme Steel - Bridge retrofit · "Finishing the deck pour" · filed 2026-10-14 · id 4e5f6a7b-8c9d-4e0f-9a1b-2c3d4e5f6a7b
#2 leave · Santos, Maria (EMP-007) · 2026-10-20 · 2 days sick leave · "Flu" · filed 2026-10-15 · id 8c9d0e1f-2a3b-4c4d-9e5f-6a7b8c9d0e1f
BLOCKED: No sick leave balance left for 2026.
Structured content
Show the structured answer
{
"items": [
{
"kind": "overtime",
"publicId": "4e5f6a7b-8c9d-4e0f-9a1b-2c3d4e5f6a7b",
"who": "Dela Cruz, Juan",
"whoDetail": "EMP-001",
"summary": "1.00h overtime",
"subjectDate": "2026-10-14",
"target": "Acme Steel - Bridge retrofit",
"reason": "Finishing the deck pour",
"filedAt": "2026-10-14T09:12:00.000Z"
},
{
"kind": "leave",
"publicId": "8c9d0e1f-2a3b-4c4d-9e5f-6a7b8c9d0e1f",
"who": "Santos, Maria",
"whoDetail": "EMP-007",
"summary": "2 days sick leave",
"subjectDate": "2026-10-20",
"reason": "Flu",
"filedAt": "2026-10-15T01:30:00.000Z",
"blocked": "No sick leave balance left for 2026."
}
]
}
decide_requestchanges data
Approve or reject a request
Decides one item from my_approvals, as filed: overtime is approved for the hours claimed, an advance on the terms the service works out. Approving for different figures is done in the suite. Rejecting a quotation or invoice needs a reason. Read the item back to the person before calling this.
Someone asks: “Approve Juan's overtime.”
Input
{
"kind": "overtime",
"publicId": "4e5f6a7b-8c9d-4e0f-9a1b-2c3d4e5f6a7b",
"decision": "approve"
}
What comes back
Approved the overtime for Dela Cruz, Juan. It is now approved.
Structured content
Show the structured answer
{
"kind": "overtime",
"publicId": "4e5f6a7b-8c9d-4e0f-9a1b-2c3d4e5f6a7b",
"decision": "approve",
"status": "approved",
"who": "Dela Cruz, Juan"
}
Pay
Payslips, runs and what a job cost. Read and simulate only — nothing here pays anybody.
my_payslipsreads only
My payslips
The signed-in person's released payslips: period, pay date, gross, deductions and net. With a payslipPublicId, one payslip in full — days and hours, every earning and deduction line. Only ever the person's own.
Someone asks: “How much was my last payslip?”
Input
{
"from": "2026-09-01"
}
What comes back
2 payslips:
2026-09-16 → 2026-09-30 · paid 2026-10-05 · gross 14250.00 · deductions 1893.75 · net 12356.25 · PR-2026-0930-01 · id a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d
2026-09-01 → 2026-09-15 · paid 2026-09-20 · gross 13500.00 · deductions 1793.75 · net 11706.25 · PR-2026-0915-01 · id b2c3d4e5-f6a7-4b8c-9d0e-1f2a3b4c5d6e
Structured content
Show the structured answer
{
"payslips": [
{
"publicId": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
"referenceNo": "PR-2026-0930-01",
"periodLabel": "2026-09-16 → 2026-09-30",
"payDate": "2026-10-05",
"grossPay": "14250.00",
"totalDeductions": "1893.75",
"netPay": "12356.25"
},
"…"
]
}
payroll_runsreads only
Payroll runs
Payroll runs, newest first: period, type, status, pay date and totals. Simulations are left out unless asked for.
Someone asks: “List this year's payroll runs.”
Input
{
"year": 2026,
"limit": 2
}
What comes back
2 of 19 runs:
PR-2026-0930-01 · 2026-09-16 → 2026-09-30 (Semi-monthly) · regular · paid · pays 2026-10-05 · gross 812450.00 · net 701233.10 · id d4e5f6a7-b8c9-4d0e-9f1a-2b3c4d5e6f7a
PR-2026-0915-01 · 2026-09-01 → 2026-09-15 (Semi-monthly) · regular · paid · pays 2026-09-20 · gross 798120.00 · net 689410.55 · id e5f6a7b8-c9d0-4e1f-8a2b-3c4d5e6f7a8b
Structured content
Show the structured answer
{
"runs": [
"…two PayrollRunDto rows…"
],
"total": 19
}
simulate_payrollchanges data
Simulate payroll
Runs the payroll engine for one pay period as a simulation: the payslips can be read, but nothing is paid, no balance, accrual or grant moves, and a simulation can never be approved. Name the period by id, or give any date inside it. Reports totals, who could not be paid and why.
Someone asks: “Simulate payroll for the first half of October.”
Input
{
"date": "2026-10-10"
}
What comes back
Simulation SIM-2026-1015-03 for 2026-10-01 → 2026-10-15 (Semi-monthly), regular: calculated.
Gross 804310.00 = basic 702000.00 + overtime 41310.00 + holiday 0.00 + incentives 61000.00; deductions 109870.20; net 694439.80.
1 person could not be paid:
Villanueva, Rico (EMP-031): no salary rate on 2026-10-01.
This is a simulation: nothing was paid and no balance moved. The payslips are under Payroll › Simulations in the suite.
Structured content
Show the structured answer
{
"run": {
"referenceNo": "SIM-2026-1015-03",
"status": "calculated",
"isSimulation": true,
"totalGross": "804310.00",
"totalNet": "694439.80",
"…": "…"
},
"skipped": [
{
"employeePublicId": "f6a7b8c9-d0e1-4f2a-9b3c-4d5e6f7a8b9c",
"employeeName": "Villanueva, Rico",
"employeeNumber": "EMP-031",
"reason": "no salary rate on 2026-10-01."
}
],
"notes": []
}
job_costsreads only
Labor cost by project or cost center
What each project or cost center cost in labor over a span, from approved payroll: basic, overtime, holiday, incentives, employer contributions and the total. Highest first.
Someone asks: “What did each project cost us in labor last month?”
Input
{
"from": "2026-09-01",
"to": "2026-09-30",
"by": "project"
}
What comes back
Labor cost 2026-09-01 to 2026-09-30, by project:
Acme Steel - Bridge retrofit · total 412330.50 · basic 350000.00 · overtime 22330.50 · holiday 0.00 · incentives 15000.00 · employer 25000.00
Acme Steel - Warehouse fit-out · total 198745.00 · basic 170000.00 · overtime 8745.00 · holiday 0.00 · incentives 5000.00 · employer 15000.00
No project · total 61200.00 · basic 52000.00 · overtime 0.00 · holiday 0.00 · incentives 4200.00 · employer 5000.00
Structured content
Show the structured answer
{
"from": "2026-09-01",
"to": "2026-09-30",
"by": "project",
"rows": [
{
"publicId": "0c9d8e7f-6a5b-4c3d-9e2f-1a0b9c8d7e6f",
"code": "ALPHA",
"name": "Acme Steel - Bridge retrofit",
"totals": {
"basic": "350000.00",
"overtime": "22330.50",
"holiday": "0.00",
"incentive": "15000.00",
"employer": "25000.00",
"total": "412330.50",
"…": "…"
}
},
"…"
]
}
deduction_requestsreads only
Deduction requests and advances
Deduction requests: the kind, the amount, how many instalments, which period it starts in and its status. `includeCompleted` adds the ones already paid off.
Someone asks: “Are there advances waiting for approval?”
Input
{
"status": "pending"
}
What comes back
1 of 1 deduction request:
2026-10-14 · Dela Cruz, Juan (EMP-001) · Cash advance · 6000.00 over 3 instalments · from 2026-10-16 → 2026-10-31 · pending · id 3b4c5d6e-7f8a-4b9c-8d0e-1f2a3b4c5d6e
Structured content
Show the structured answer
{
"requests": [
"…one DeductionRequestDto…"
],
"total": 1
}
incentive_grantsreads only
Incentive grants
Incentive grants: who, which incentive, the value, the period it is paid in, the project or cost center it is charged to where it names one, and its status.
Someone asks: “What incentives are going out this cutoff?”
Input
{
"payPeriodPublicId": "6f7a8b9c-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
"status": "approved"
}
What comes back
1 of 1 incentive grant:
2026-10-12 · Santos, Maria (EMP-007) · Site allowance · 1500.00 (Fixed amount) · 2026-10-01 → 2026-10-15 · on Acme Steel - Bridge retrofit · approved · id 4c5d6e7f-8a9b-4c0d-9e1f-2a3b4c5d6e7f
Structured content
Show the structured answer
{
"grants": [
"…one IncentiveGrantDto…"
],
"total": 1
}
owed_balancesreads only
What people still owe
Outstanding deduction balances, largest first: who owes what, broken down by kind of deduction, and over how many schedules.
Someone asks: “Who still owes the company money?”
Input
{
"limit": 2
}
What comes back
2 people with a balance:
Dela Cruz, Juan (EMP-001) · 4000.00 over 1 schedule · Cash advance 4000.00
Villanueva, Rico (EMP-031) · 1250.00 over 2 schedules · Cash advance 1000.00, Uniform 250.00
Structured content
Show the structured answer
{
"rows": [
"…two OwedBalanceRowDto rows…"
]
}
Sales
Quotations through to what customers still owe.
sales_documentsreads only
Sales documents
Quotations, sales orders, invoices or delivery receipts, newest first: the number, the customer, the project, the status and the amount. `overdueOnly` and `expiredOnly` narrow to what needs chasing.
Someone asks: “Which invoices are overdue?”
Input
{
"kind": "invoice",
"overdueOnly": true
}
What comes back
2 of 2 invoices:
INV-2026-0912-03 · Acme Steel Corporation · Acme Steel - Bridge retrofit · sent · PHP 248000.00 (balance 248000.00) · overdue · id 1f2a3b4c-5d6e-4f7a-8b8c-9d0e1f2a3b4c
INV-2026-0820-01 · Northwind Builders · — · sent · PHP 96500.00 (balance 46500.00) · overdue · id 2a3b4c5d-6e7f-4a8b-9c9d-0e1f2a3b4c5d
Structured content
Show the structured answer
{
"documents": [
"…two InvoiceSummaryDto rows…"
],
"total": 2
}
receivablesreads only
Receivables
What customers owe: the total outstanding, how much is overdue and how much falls due soon, with the ageing buckets. Pass customers to get each one's balance instead.
Someone asks: “How much are we owed?”
Input
{}
What comes back
As of 2026-10-15, in PHP:
outstanding 1294500.00 across 14 invoice(s)
overdue 294500.00 across 2
due within 7 days: 180000.00 across 3
Ageing buckets:
{"label":"Current","count":9,"value":"1000000.00"}
{"label":"1–30 days","count":2,"value":"248000.00"}
{"label":"31–60 days","count":1,"value":"46500.00"}
Structured content
Show the structured answer
{
"aging": {
"today": "2026-10-15",
"currency": "PHP",
"outstanding": {
"count": 14,
"value": "1294500.00"
},
"overdue": {
"count": 2,
"value": "294500.00"
},
"dueSoon": {
"count": 3,
"value": "180000.00"
},
"dueWithinDays": 7,
"buckets": [
"…agingBucketDto rows…"
]
}
}
sales_pipelinereads only
Quotation pipeline
Quotations by status with their count and value: what is open, what is waiting on a customer, and what is expiring soon or already expired.
Takes no input.
Someone asks: “What is in the quotation pipeline?”
Input
{}
What comes back
As of 2026-10-15, in PHP:
total 23 worth 4820000.00
open 11 worth 2310000.00
awaiting the customer 6 worth 1450000.00
expiring within 14 days: 2 worth 320000.00
expired 3 worth 410000.00
By status:
draft: 4 worth 540000.00
sent: 6 worth 1450000.00
accepted: 9 worth 2420000.00
declined: 4 worth 410000.00
Structured content
Show the structured answer
{
"pipeline": {
"today": "2026-10-15",
"currency": "PHP",
"total": {
"count": 23,
"value": "4820000.00"
},
"…": "…"
}
}