Vertexhaven Partners — HRIS data dictionary
Instance key: load-j1yko-0039
MCP endpoint: https://hr-safe-space.cheek.org/i/load-j1yko-0039/mcp
Authentication: none. The endpoint key is the only thing that selects a dataset.
Generated: 2026-09-14T05:48:19.587Z
Every row described here is synthetic. It represents no real person and no real organisation. This exists to give an assistant a realistic HRIS to work against.
This instance
| Property | Value |
|---|---|
| Company | Vertexhaven Partners |
| Industry | Healthcare Services |
| Email domain | vertexhaven.io |
| Founded | 1939 |
| Base currency | USD |
| Worker records | 70,566 |
| Management layers | 9 |
| Provisioned | 2026-09-14T03:28:35.719Z |
| Tool calls served | 14 |
| Writes applied | 0 |
Organisation shape
| Layer | Role | People | Average span of control |
|---|---|---|---|
| 0 | Chief Executive Officer | 1 | 6 |
| 1 | Executive | 6 | 2 |
| 2 | Executive | 14 | 3 |
| 3 | Vice President | 38 | 3 |
| 4 | Senior Director | 114 | 3 |
| 5 | Director | 343 | 4 |
| 6 | Senior Manager | 1,373 | 5 |
| 7 | Manager | 6,867 | 9 |
| 8 | Individual contributor | 61,810 | — |
How an instance works
Calling any endpoint key for the first time provisions a complete HRIS for that key. The roster size is drawn from the range 50,000–425,000 worker records and is stable for the life of the key: the same key always describes the same company.
Provisioning is a single row insert. The employee roster is not copied per instance. One master template holds the worker records once; an instance is a projection over a prefix of that template, parameterised by the instance row. Names, company identity, department mix, location mix, pay scale and hire dates all derive from the instance, so two keys over the same template are two different companies. That is what makes it possible to stand up thousands of these: a 425,000-person company materialises in the time it takes to insert one row, and costs one row of storage until something is written to it.
Writes are copy-on-write. Every mutating tool writes a diff into this instance's private overlay: a patch, a newly created row, or a tombstone. Reads merge the overlay over the projection. The shared template is immutable at runtime, so a write through one endpoint key can never be observed through another.
Isolation guarantee. Every query this endpoint runs is bound to load-j1yko-0039. There is no tool, filter or parameter that reaches another instance's data.
Entities
| Entity | Rows here | Origin | Writable | Description |
|---|---|---|---|---|
employee |
70,566 | template-projection | yes | The worker record. |
compensation_event |
28,763 | template-projection | yes | Historical pay changes: merit increases, promotions, market adjustments and retention awards. |
time_off_request |
15,591 | template-projection | yes | Absence requests across every leave type, from submitted through approved, denied or taken. |
performance_review |
60,846 | template-projection | yes | Completed review-cycle records with rating, potential, calibration state and written feedback. |
goal |
20,802 | template-projection | yes | Individual objectives with weighting, progress and status. |
benefit_enrollment |
59,917 | template-projection | yes | Which employees are enrolled in which benefit plans, with employee and employer cost. |
training_record |
43,646 | template-projection | yes | Assigned and completed learning, including mandatory compliance training and its renewal state. |
hr_case |
727 | template-projection | yes | Employee-relations matters: conduct concerns, grievances, accommodation requests, safety reports and ethics-hotline intake, with severity, SLA and assignment. |
hr_case_note |
2,151 | template-projection | yes | Chronological notes recorded against an employee-relations case. |
job_requisition |
1,400 | template-projection | yes | Open and historical hiring requisitions with hiring manager, recruiter, target and fill state. |
candidate |
26,000 | template-projection | yes | Applicants against requisitions, with source, pipeline stage, rating and expected compensation. |
payslip |
~3,387,168 (derived) | derived | no | Per-period earnings, taxes and deductions. |
time_off_balance |
~564,528 (derived) | derived | no | Accrued, taken and available leave per employee per leave type. |
audit_log |
1 | overlay | no | Every write any MCP tool has performed against this instance, in order. |
department |
19 | reference | no | Department catalogue. |
location |
24 | reference | no | Work locations with timezone, currency and cost-of-living index. |
job |
418 | reference | no | Job catalogue: every department and level combination with its title, FLSA status and pay band. |
benefit_plan |
22 | reference | no | Benefit plan catalogue with carrier, tier, cost split, deductible and eligibility waiting period. |
training_course |
25 | reference | no | Learning catalogue, including which courses are mandatory and how often they must be renewed. |
policy_document |
12 | reference | no | HR policy library. |
payroll_run |
48 | template-projection | no | The payroll calendar: two years of semi-monthly periods with status and totals. |
Operational entities
employee
Employee — The worker record. One row per person who has ever been on the roster, including terminated leavers. Org structure (manager, level, department, direct reports) is derived arithmetically from the position in the roster, so the reporting tree is always internally consistent and never orphaned.
- Rows in this instance: 70,566
- Primary key:
employee_id(public ids are prefixedEMP-) - Origin: Projected from the shared master template and filtered to this instance's roster.
- Default sort:
employee_idasc - Writable through MCP: yes
- Read by:
search_employees,get_employee,list_direct_reports,get_reporting_chain,get_org_snapshot,get_headcount_summary,get_compensation_detail,get_pay_band_analysis,get_attrition_report,get_diversity_report,describe_hris_schema,get_instance_info - Written by:
submit_compensation_change,submit_performance_review,transfer_employee,promote_employee,record_termination,onboard_employee
Columns
| Column | Type | Writable | Description |
|---|---|---|---|
employee_id |
text | no | Stable public identifier. primary key |
seq |
integer | no | Position in the roster. Lower numbers sit higher in the org. |
first_name |
text | yes | Given name. |
last_name |
text | yes | Family name. |
middle_initial |
text | no | Disambiguating initial, present only above the size of the name space. |
full_name |
text | yes | Display name. |
work_email |
text | yes | Corporate email. Unique across the instance. |
work_phone |
text | yes | Work telephone number. |
home_address_line1 |
text | yes | Home street address. |
job_title |
text | yes | Current job title. |
job_code |
text | no | Job catalogue code. FK → job.job_code |
job_family |
text | no | Job family grouping. |
flsa_status |
text | no | Overtime eligibility. one of: exempt, non-exempt |
job_level |
integer | yes | Career level, 0 (associate) to 10 (CEO). |
job_level_name |
text | no | Human-readable level. |
job_level_code |
text | no | Short level code such as IC3 or M2. |
is_people_manager |
boolean | no | True when the employee has at least one direct report. |
is_executive |
boolean | no | True at VP level and above. |
department_code |
text | no | Owning department. FK → department.code |
department_name |
text | yes | Department name. |
department_function |
text | no | Function grouping such as Technology or Revenue. |
cost_center |
text | no | Finance cost centre. |
location_code |
text | yes | Primary work location. FK → location.code |
location_city |
text | no | Work city. |
location_region |
text | no | State or region. |
location_country |
text | no | Country. |
location_country_code |
text | no | ISO 3166-1 alpha-2 country code. |
location_timezone |
text | no | IANA timezone. |
manager_id |
text | yes | Direct manager. Null only for the CEO. FK → employee.employee_id |
manager_seq |
integer | no | Manager roster position. |
direct_report_count |
integer | no | Exact number of direct reports. |
org_depth |
integer | no | Layers below the CEO. 0 is the CEO. |
employment_type |
text | no | Full-time, part-time, contractor, intern or temporary. |
work_arrangement |
text | yes | On-site, hybrid or remote. |
employment_status |
text | yes | Current status. one of: active, on_leave, terminated |
hire_date |
date | no | Original hire date. |
tenure_years |
numeric | no | Years of service to today. |
termination_date |
date | yes | Last day worked. Null unless terminated. |
termination_reason |
text | yes | Reason for leaving. |
termination_voluntary |
boolean | no | True when the employee chose to leave. |
leave_type |
text | no | Type of leave, when on leave. |
date_of_birth |
date | no | Date of birth. |
age |
integer | no | Age in whole years. |
gender |
text | no | Self-identified gender. |
ethnicity |
text | no | Self-identified ethnicity (US EEO categories). |
base_salary_cents |
bigint | yes | Annual base salary in minor units. |
base_salary |
numeric | yes | Annual base salary. |
currency |
text | no | Pay currency, from the work location. |
bonus_target_pct |
numeric | no | Target bonus as a percentage of base. |
bonus_target |
numeric | no | Target bonus amount. |
equity_units |
integer | no | Outstanding equity units. |
compa_ratio |
numeric | no | Position in the pay band. 1.00 is midpoint. |
band_min_cents |
bigint | no | Bottom of the pay band for this job. |
band_mid_cents |
bigint | no | Midpoint of the pay band. |
band_max_cents |
bigint | no | Top of the pay band. |
department_ordinal |
integer | no | Internal department ordinal. Filtering on this instead of department_code lets the query engine discard rows before it joins the reference catalogues, which is the difference between a fast page and a full pass over the roster. |
location_ordinal |
integer | no | Internal location ordinal. Same index-friendly role as department_ordinal. |
employment_status_ordinal |
integer | no | Internal status ordinal: 0 active, 1 on leave, 2 terminated. |
performance_rating |
integer | yes | Most recent rating, 1 to 5. |
engagement_score |
integer | no | Latest engagement survey score, 1 to 100. |
flight_risk_score |
integer | no | Modelled attrition risk, 1 to 100. |
tenure_days |
integer | no | Days of service. |
Filters
| Filter | Kind | Applies to | Description |
|---|---|---|---|
query |
text | full_name |
Free text across name, email, job title and id. |
employee_id |
id | employee_id |
Exact employee id. |
department_code |
exact | department_code |
Department code such as ENG. |
location_code |
exact | location_code |
Location code such as US-NYC. |
employment_status |
enum | employment_status |
Employment status. |
employment_type |
exact | employment_type |
Employment type. |
work_arrangement |
exact | work_arrangement |
On-site, Hybrid or Remote. |
manager_id |
id | manager_id |
Direct reports of this manager. |
job_level_min |
number-range | job_level |
Minimum career level. |
job_level_max |
number-range | job_level |
Maximum career level. |
hired_after |
date-range | hire_date |
Hired on or after this date. |
hired_before |
date-range | hire_date |
Hired on or before this date. |
performance_rating |
number-range | performance_rating |
Exact performance rating, 1 to 5. |
is_people_manager |
boolean | is_people_manager |
Only people managers. |
compensation_event
Compensation event — Historical pay changes: merit increases, promotions, market adjustments and retention awards.
- Rows in this instance: 28,763
- Primary key:
compensation_event_id(public ids are prefixedCMP-) - Origin: Projected from the shared master template and filtered to this instance's roster.
- Default sort:
effective_datedesc - Writable through MCP: yes
- Read by:
list_compensation_history,describe_hris_schema - Written by:
submit_compensation_change,promote_employee
Columns
| Column | Type | Writable | Description |
|---|---|---|---|
compensation_event_id |
text | no | Stable public identifier. primary key |
employee_id |
text | no | Affected employee. FK → employee.employee_id |
employee_name |
text | no | Employee display name. |
effective_date |
date | no | Date the change took effect. |
event_type |
text | no | Kind of change. |
reason |
text | no | Business justification. |
percent_change |
numeric | no | Percentage increase applied. |
previous_salary |
numeric | no | Annualised base before the change. |
new_salary |
numeric | no | Annualised base after the change. |
currency |
text | no | Pay currency. |
approved_by |
text | no | Approving manager. FK → employee.employee_id |
Filters
| Filter | Kind | Applies to | Description |
|---|---|---|---|
employee_id |
id | employee_id |
Events for one employee. |
event_type |
exact | event_type |
Kind of change. |
effective_after |
date-range | effective_date |
On or after this date. |
effective_before |
date-range | effective_date |
On or before this date. |
time_off_request
Time off request — Absence requests across every leave type, from submitted through approved, denied or taken.
- Rows in this instance: 15,591
- Primary key:
request_id(public ids are prefixedTOR-) - Origin: Projected from the shared master template and filtered to this instance's roster.
- Default sort:
start_datedesc - Writable through MCP: yes
- Read by:
list_time_off_requests,get_absence_summary,describe_hris_schema - Written by:
submit_time_off_request,decide_time_off_request
Columns
| Column | Type | Writable | Description |
|---|---|---|---|
request_id |
text | no | Stable public identifier. primary key |
employee_id |
text | no | Requesting employee. FK → employee.employee_id |
employee_name |
text | no | Employee display name. |
leave_type_code |
text | no | Leave type code. FK → time_off_type.code |
leave_type |
text | no | Leave type name. |
is_paid |
boolean | no | Whether the leave is paid. |
start_date |
date | no | First day of absence. |
end_date |
date | no | Last day of absence. |
business_days |
integer | no | Working days requested. |
status |
text | yes | Request status. one of: pending, approved, denied, cancelled, taken |
requested_on |
date | no | Submission date. |
decided_on |
date | yes | Date the request was approved or denied. |
approver_id |
text | yes | Deciding manager. FK → employee.employee_id |
note |
text | yes | Employee-supplied note. |
decision_note |
text | yes | Approver note. |
Filters
| Filter | Kind | Applies to | Description |
|---|---|---|---|
employee_id |
id | employee_id |
Requests for one employee. |
status |
enum | status |
Request status. |
leave_type_code |
exact | leave_type_code |
Leave type code such as PTO. |
start_after |
date-range | start_date |
Starting on or after this date. |
start_before |
date-range | start_date |
Starting on or before this date. |
performance_review
Performance review — Completed review-cycle records with rating, potential, calibration state and written feedback.
- Rows in this instance: 60,846
- Primary key:
review_id(public ids are prefixedREV-) - Origin: Projected from the shared master template and filtered to this instance's roster.
- Default sort:
submitted_ondesc - Writable through MCP: yes
- Read by:
list_performance_reviews,get_performance_review,describe_hris_schema - Written by:
submit_performance_review
Columns
| Column | Type | Writable | Description |
|---|---|---|---|
review_id |
text | no | Stable public identifier. primary key |
employee_id |
text | no | Reviewed employee. FK → employee.employee_id |
employee_name |
text | no | Employee display name. |
reviewer_id |
text | no | Reviewing manager. FK → employee.employee_id |
cycle_code |
text | no | Review cycle. FK → review_cycle.cycle_code |
cycle_name |
text | no | Review cycle name. |
rating |
integer | yes | Overall rating, 1 (unsatisfactory) to 5 (outstanding). |
rating_label |
text | no | Rating in words. |
potential |
text | no | Nine-box potential axis. |
promotion_ready |
boolean | yes | Flagged ready for the next level. |
calibrated |
boolean | no | Rating passed through calibration. |
strengths |
text | yes | Recorded strengths. |
growth_areas |
text | yes | Recorded development areas. |
summary |
text | yes | Narrative summary. |
submitted_on |
date | no | Date the review was submitted. |
Filters
| Filter | Kind | Applies to | Description |
|---|---|---|---|
employee_id |
id | employee_id |
Reviews for one employee. |
cycle_code |
exact | cycle_code |
Review cycle code. |
rating |
number-range | rating |
Exact rating, 1 to 5. |
promotion_ready |
boolean | promotion_ready |
Only promotion-ready employees. |
goal
Goal — Individual objectives with weighting, progress and status.
- Rows in this instance: 20,802
- Primary key:
goal_id(public ids are prefixedGOL-) - Origin: Projected from the shared master template and filtered to this instance's roster.
- Default sort:
due_dateasc - Writable through MCP: yes
- Read by:
list_goals,describe_hris_schema - Written by:
update_goal_progress
Columns
| Column | Type | Writable | Description |
|---|---|---|---|
goal_id |
text | no | Stable public identifier. primary key |
employee_id |
text | no | Goal owner. FK → employee.employee_id |
employee_name |
text | no | Owner display name. |
title |
text | yes | Goal statement. |
category |
text | no | Goal category. |
cycle_code |
text | no | Planning cycle. |
progress_pct |
integer | yes | Percent complete. |
status |
text | yes | Goal status. one of: on_track, at_risk, off_track, achieved, cancelled |
weight_pct |
integer | no | Weight within the employee goal set. |
due_date |
date | no | Target completion date. |
Filters
| Filter | Kind | Applies to | Description |
|---|---|---|---|
employee_id |
id | employee_id |
Goals for one employee. |
status |
enum | status |
Goal status. |
category |
exact | category |
Goal category. |
benefit_enrollment
Benefit enrollment — Which employees are enrolled in which benefit plans, with employee and employer cost.
- Rows in this instance: 59,917
- Primary key:
enrollment_id(public ids are prefixedBEN-) - Origin: Projected from the shared master template and filtered to this instance's roster.
- Default sort:
enrolled_ondesc - Writable through MCP: yes
- Read by:
get_benefit_enrollments,describe_hris_schema - Written by:
enroll_in_benefit
Columns
| Column | Type | Writable | Description |
|---|---|---|---|
enrollment_id |
text | no | Stable public identifier. primary key |
employee_id |
text | no | Enrolled employee. FK → employee.employee_id |
employee_name |
text | no | Employee display name. |
plan_code |
text | no | Benefit plan. FK → benefit_plan.plan_code |
plan_name |
text | no | Plan name. |
category |
text | no | Benefit category. |
carrier |
text | no | Carrier or administrator. |
coverage_tier |
text | no | Coverage tier. |
status |
text | yes | Enrollment status. one of: active, waived, terminated, pending |
enrolled_on |
date | no | Effective date of coverage. |
dependents |
integer | no | Covered dependents. |
employee_monthly_cost |
numeric | no | Employee monthly contribution. |
employer_monthly_cost |
numeric | no | Employer monthly contribution. |
annual_employer_cost |
numeric | no | Employer cost over twelve months. |
Filters
| Filter | Kind | Applies to | Description |
|---|---|---|---|
employee_id |
id | employee_id |
Enrollments for one employee. |
plan_code |
exact | plan_code |
Plan code. |
category |
exact | category |
Benefit category. |
status |
enum | status |
Enrollment status. |
training_record
Training record — Assigned and completed learning, including mandatory compliance training and its renewal state.
- Rows in this instance: 43,646
- Primary key:
training_record_id(public ids are prefixedTRN-) - Origin: Projected from the shared master template and filtered to this instance's roster.
- Default sort:
completed_ondesc - Writable through MCP: yes
- Read by:
get_training_transcript,get_compliance_training_status,describe_hris_schema - Written by:
onboard_employee,assign_training
Columns
| Column | Type | Writable | Description |
|---|---|---|---|
training_record_id |
text | no | Stable public identifier. primary key |
employee_id |
text | no | Learner. FK → employee.employee_id |
employee_name |
text | no | Learner display name. |
course_code |
text | no | Course. FK → training_course.course_code |
course_title |
text | no | Course title. |
category |
text | no | Course category. |
is_mandatory |
boolean | no | Whether the course is required. |
status |
text | yes | Completion status. one of: completed, in_progress, not_started, overdue |
completed_on |
date | yes | Completion date. |
score |
integer | yes | Assessment score out of 100. |
expires_on |
date | no | Date the certification lapses. |
assigned_on |
date | no | Date the course was assigned. |
Filters
| Filter | Kind | Applies to | Description |
|---|---|---|---|
employee_id |
id | employee_id |
Records for one employee. |
course_code |
exact | course_code |
Course code. |
status |
enum | status |
Completion status. |
is_mandatory |
boolean | is_mandatory |
Only mandatory training. |
hr_case
HR case — Employee-relations matters: conduct concerns, grievances, accommodation requests, safety reports and ethics-hotline intake, with severity, SLA and assignment.
- Rows in this instance: 727
- Primary key:
case_id(public ids are prefixedCASE-) - Origin: Projected from the shared master template and filtered to this instance's roster.
- Default sort:
opened_ondesc - Writable through MCP: yes
- Read by:
list_hr_cases,get_hr_case,describe_hris_schema - Written by:
open_hr_case,add_case_note,resolve_hr_case
Columns
| Column | Type | Writable | Description |
|---|---|---|---|
case_id |
text | no | Stable public identifier. primary key |
subject_employee_id |
text | no | Employee the case concerns. FK → employee.employee_id |
subject_employee_name |
text | no | Subject display name. Suppressed when anonymous. |
case_type_code |
text | no | Case type. FK → case_type.code |
case_type |
text | no | Case type name. |
category |
text | no | Case category. |
status |
text | yes | Case status. one of: open, investigating, pending_review, resolved, closed |
severity |
text | yes | Assessed severity. one of: low, medium, high, critical |
confidential |
boolean | no | Restricted handling. |
anonymous |
boolean | no | Reported anonymously. |
assigned_to_id |
text | yes | Assigned HR partner. FK → employee.employee_id |
assigned_to_name |
text | no | Assigned HR partner name. |
opened_on |
date | no | Date the case was opened. |
sla_due_on |
date | no | Date the case breaches its SLA. |
closed_on |
date | yes | Date the case was closed. |
days_open |
integer | no | Days between opening and closing, or today. |
sla_breached |
boolean | no | Whether the SLA was missed. |
summary |
text | yes | Intake summary. |
note_count |
integer | yes | Number of case notes. |
resolution |
text | yes | Recorded outcome. |
Filters
| Filter | Kind | Applies to | Description |
|---|---|---|---|
subject_employee_id |
id | subject_employee_id |
Cases about one employee. |
status |
enum | status |
Case status. |
severity |
enum | severity |
Severity. |
case_type_code |
exact | case_type_code |
Case type code. |
opened_after |
date-range | opened_on |
Opened on or after this date. |
sla_breached |
boolean | sla_breached |
Only cases past SLA. |
hr_case_note
HR case note — Chronological notes recorded against an employee-relations case.
- Rows in this instance: 2,151
- Primary key:
note_id(public ids are prefixedCNOTE-) - Origin: Projected from the shared master template and filtered to this instance's roster.
- Default sort:
recorded_ondesc - Writable through MCP: yes
- Read by:
get_hr_case,describe_hris_schema - Written by:
add_case_note
Columns
| Column | Type | Writable | Description |
|---|---|---|---|
note_id |
text | no | Stable public identifier. primary key |
case_id |
text | no | Parent case. FK → hr_case.case_id |
recorded_on |
date | no | Date the note was recorded. |
author_id |
text | no | Author. FK → employee.employee_id |
author_name |
text | no | Author display name. |
internal |
boolean | no | Visible only to HR. |
body |
text | yes | Note text. |
Filters
| Filter | Kind | Applies to | Description |
|---|---|---|---|
case_id |
id | case_id |
Notes on one case. |
internal |
boolean | internal |
Only internal notes. |
job_requisition
Job requisition — Open and historical hiring requisitions with hiring manager, recruiter, target and fill state.
- Rows in this instance: 1,400
- Primary key:
requisition_id(public ids are prefixedREQ-) - Origin: Projected from the shared master template and filtered to this instance's roster.
- Default sort:
opened_ondesc - Writable through MCP: yes
- Read by:
list_job_requisitions,get_job_requisition,get_recruiting_funnel,describe_hris_schema - Written by:
open_job_requisition
Columns
| Column | Type | Writable | Description |
|---|---|---|---|
requisition_id |
text | no | Stable public identifier. primary key |
job_title |
text | yes | Role being hired. |
job_code |
text | no | Job catalogue code. FK → job.job_code |
department_code |
text | no | Hiring department. FK → department.code |
department_name |
text | no | Department name. |
location_code |
text | no | Work location. FK → location.code |
job_level |
integer | no | Career level of the opening. |
status |
text | yes | Requisition status. one of: draft, open, on_hold, filled, cancelled |
priority |
text | no | Business priority. one of: low, medium, high, critical |
openings |
integer | no | Headcount approved. |
filled_count |
integer | yes | Headcount filled so far. |
remote_eligible |
boolean | no | Open to remote candidates. |
hiring_manager_id |
text | no | Hiring manager. FK → employee.employee_id |
hiring_manager_name |
text | no | Hiring manager name. |
recruiter_id |
text | no | Assigned recruiter. FK → employee.employee_id |
recruiter_name |
text | no | Recruiter name. |
opened_on |
date | no | Date the requisition opened. |
target_fill_date |
date | no | Committed fill date. |
days_open |
integer | no | Age of the requisition in days. |
salary_band_min |
numeric | no | Bottom of the advertised band. |
salary_band_max |
numeric | no | Top of the advertised band. |
Filters
| Filter | Kind | Applies to | Description |
|---|---|---|---|
status |
enum | status |
Requisition status. |
department_code |
exact | department_code |
Hiring department. |
location_code |
exact | location_code |
Work location. |
priority |
enum | priority |
Business priority. |
hiring_manager_id |
id | hiring_manager_id |
Requisitions for one hiring manager. |
candidate
Candidate — Applicants against requisitions, with source, pipeline stage, rating and expected compensation.
- Rows in this instance: 26,000
- Primary key:
candidate_id(public ids are prefixedCAND-) - Origin: Projected from the shared master template and filtered to this instance's roster.
- Default sort:
applied_ondesc - Writable through MCP: yes
- Read by:
get_job_requisition,list_candidates,get_recruiting_funnel,describe_hris_schema - Written by:
advance_candidate
Columns
| Column | Type | Writable | Description |
|---|---|---|---|
candidate_id |
text | no | Stable public identifier. primary key |
full_name |
text | no | Candidate name. |
email |
text | no | Contact email. |
phone |
text | no | Contact phone. |
requisition_id |
text | no | Requisition applied to. FK → job_requisition.requisition_id |
job_title |
text | no | Role applied for. |
department_code |
text | no | Hiring department. |
source |
text | no | How the candidate arrived. |
stage |
text | yes | Pipeline stage. one of: applied, screen, interview, onsite, offer, hired, rejected, withdrawn |
rating |
integer | yes | Interview rating, 1 to 5. Null before interview. |
years_experience |
integer | no | Self-reported years of experience. |
expected_salary |
numeric | no | Candidate compensation expectation. |
applied_on |
date | no | Application date. |
last_activity_on |
date | no | Most recent pipeline activity. |
days_in_pipeline |
integer | no | Days since applying. |
referred_by_id |
text | no | Referring employee, when referred. FK → employee.employee_id |
notes |
text | yes | Recruiter notes. |
Filters
| Filter | Kind | Applies to | Description |
|---|---|---|---|
requisition_id |
id | requisition_id |
Candidates on one requisition. |
stage |
enum | stage |
Pipeline stage. |
source |
exact | source |
Sourcing channel. |
query |
text | full_name |
Free text across candidate name and email. |
payslip
Payslip — Per-period earnings, taxes and deductions. Computed on demand from the employee record and the payroll calendar rather than stored: at roster scale this table would be tens of millions of rows per instance with no added information.
- Rows in this instance: approximately 3,387,168 (computed on demand)
- Primary key:
payslip_id(public ids are prefixedPAY-) - Origin: Computed on demand. Nothing is stored.
- Default sort:
pay_datedesc - Writable through MCP: no
- Note: Derived entities are read-only: there is no stored row to patch.
- Read by:
get_payslips,describe_hris_schema
Columns
| Column | Type | Writable | Description |
|---|---|---|---|
payslip_id |
text | no | Stable public identifier. primary key |
employee_id |
text | no | Paid employee. FK → employee.employee_id |
employee_seq |
integer | no | Roster position of the employee. Filtering on this instead of employee_id turns a scan of the whole roster into a primary-key lookup. |
employee_name |
text | no | Employee display name. |
payroll_run_id |
text | no | Payroll run. FK → payroll_run.payroll_run_id |
period_start |
date | no | Pay period start. |
period_end |
date | no | Pay period end. |
pay_date |
date | no | Date paid. |
gross_pay |
numeric | no | Gross earnings for the period. |
base_earnings |
numeric | no | Base salary component. |
bonus_earnings |
numeric | no | Bonus component, paid in the final period of a quarter. |
federal_tax |
numeric | no | Federal income tax withheld. |
state_tax |
numeric | no | State or regional tax withheld. |
social_contributions |
numeric | no | Social insurance contributions. |
benefit_deductions |
numeric | no | Pre-tax benefit deductions. |
retirement_deferral |
numeric | no | Retirement plan deferral. |
net_pay |
numeric | no | Take-home pay. |
currency |
text | no | Payment currency. |
Filters
| Filter | Kind | Applies to | Description |
|---|---|---|---|
employee_id |
id | employee_id |
Payslips for one employee. |
payroll_run_id |
exact | payroll_run_id |
Payslips in one payroll run. |
time_off_balance
Time off balance — Accrued, taken and available leave per employee per leave type. Computed from tenure, the accrual policy and approved absences rather than stored.
- Rows in this instance: approximately 564,528 (computed on demand)
- Primary key:
balance_id(public ids are prefixedBAL-) - Origin: Computed on demand. Nothing is stored.
- Default sort:
employee_idasc - Writable through MCP: no
- Note: Derived entities are read-only: there is no stored row to patch.
- Read by:
get_time_off_balances,describe_hris_schema - Written by:
submit_time_off_request
Columns
| Column | Type | Writable | Description |
|---|---|---|---|
balance_id |
text | no | Stable public identifier. primary key |
employee_id |
text | no | Employee. FK → employee.employee_id |
employee_seq |
integer | no | Roster position of the employee. Filtering on this instead of employee_id turns a scan of the whole roster into a primary-key lookup. |
employee_name |
text | no | Employee display name. |
leave_type_code |
text | no | Leave type. FK → time_off_type.code |
leave_type |
text | no | Leave type name. |
accrual_days_per_year |
numeric | no | Annual accrual rate. |
accrued_days |
numeric | no | Days accrued in the current year. |
taken_days |
numeric | no | Days taken in the current year. |
scheduled_days |
numeric | no | Approved but not yet taken. |
available_days |
numeric | no | Days still available. |
max_carryover_days |
numeric | no | Cap on carryover into next year. |
as_of |
date | no | Date the balance was computed. |
Filters
| Filter | Kind | Applies to | Description |
|---|---|---|---|
employee_id |
id | employee_id |
Balances for one employee. |
leave_type_code |
exact | leave_type_code |
Leave type code. |
audit_log
Audit log entry — Every write any MCP tool has performed against this instance, in order. Populated only by tool calls, so a freshly provisioned instance holds exactly one entry.
- Rows in this instance: 1
- Primary key:
audit_id(public ids are prefixedAUD-) - Origin: Exists only because a tool on this endpoint created it.
- Default sort:
occurred_atdesc - Writable through MCP: no
- Read by:
list_recent_changes,describe_hris_schema - Written by:
submit_compensation_change,submit_time_off_request,decide_time_off_request,submit_performance_review,update_goal_progress,open_job_requisition,advance_candidate,transfer_employee,promote_employee,record_termination,onboard_employee,enroll_in_benefit,assign_training,open_hr_case,add_case_note,resolve_hr_case
Columns
| Column | Type | Writable | Description |
|---|---|---|---|
audit_id |
text | no | Stable public identifier. primary key |
occurred_at |
timestamptz | no | When the write happened. |
tool |
text | no | MCP tool that performed the write. |
action |
text | no | Logical action. |
entity |
text | no | Entity affected. |
entity_id |
text | no | Record affected. |
actor |
text | no | Who the tool acted as. |
summary |
text | no | Human-readable description. |
details |
jsonb | no | Structured before/after payload. |
Filters
| Filter | Kind | Applies to | Description |
|---|---|---|---|
entity |
exact | entity |
Entity name. |
entity_id |
id | entity_id |
One record. |
tool |
exact | tool |
Tool name. |
Reference catalogues
department
Department — Department catalogue. Headcount share is allocated per instance, so the same catalogue produces a differently shaped company each time.
- Rows in this instance: 19
- Primary key:
code(public ids are prefixedDEPT-) - Origin: Shared catalogue, identical in every instance, annotated with this instance's counts.
- Default sort:
headcountdesc - Writable through MCP: no
- Read by:
get_org_snapshot,list_departments,describe_hris_schema
Columns
| Column | Type | Writable | Description |
|---|---|---|---|
code |
text | no | Department code. primary key |
name |
text | no | Department name. |
function |
text | no | Function grouping. |
cost_center |
text | no | Finance cost centre. |
headcount |
integer | no | Employees in this department in this instance. |
active_headcount |
integer | no | Active employees. |
avg_base_salary |
numeric | no | Average base salary. |
leader_id |
text | no | Most senior person in the department. FK → employee.employee_id |
leader_name |
text | no | Department leader. |
Filters
| Filter | Kind | Applies to | Description |
|---|---|---|---|
function |
exact | function |
Function grouping. |
location
Location — Work locations with timezone, currency and cost-of-living index. The index scales pay.
- Rows in this instance: 24
- Primary key:
code(public ids are prefixedLOC-) - Origin: Shared catalogue, identical in every instance, annotated with this instance's counts.
- Default sort:
headcountdesc - Writable through MCP: no
- Read by:
get_org_snapshot,list_locations,describe_hris_schema
Columns
| Column | Type | Writable | Description |
|---|---|---|---|
code |
text | no | Location code. primary key |
city |
text | no | City. |
region |
text | no | State or region. |
country |
text | no | Country. |
country_code |
text | no | ISO country code. |
timezone |
text | no | IANA timezone. |
currency |
text | no | Local currency. |
cost_of_living_index |
numeric | no | Pay multiplier relative to the reference market. |
is_headquarters |
boolean | no | Headquarters site. |
headcount |
integer | no | Employees at this location. |
Filters
| Filter | Kind | Applies to | Description |
|---|---|---|---|
country_code |
exact | country_code |
ISO country code. |
job
Job — Job catalogue: every department and level combination with its title, FLSA status and pay band.
- Rows in this instance: 418
- Primary key:
job_code(public ids are prefixedJOB-) - Origin: Shared catalogue, identical in every instance, annotated with this instance's counts.
- Default sort:
job_codeasc - Writable through MCP: no
- Read by:
get_compensation_detail,describe_hris_schema
Columns
| Column | Type | Writable | Description |
|---|---|---|---|
job_code |
text | no | Job code. primary key |
title |
text | no | Job title. |
department_code |
text | no | Department. FK → department.code |
job_family |
text | no | Job family. |
job_level |
integer | no | Career level. |
level_name |
text | no | Level name. |
flsa_status |
text | no | Overtime eligibility. |
band_min |
numeric | no | Band minimum. |
band_mid |
numeric | no | Band midpoint. |
band_max |
numeric | no | Band maximum. |
incumbents |
integer | no | Employees currently in this job. |
Filters
| Filter | Kind | Applies to | Description |
|---|---|---|---|
department_code |
exact | department_code |
Department code. |
job_level |
number-range | job_level |
Career level. |
benefit_plan
Benefit plan — Benefit plan catalogue with carrier, tier, cost split, deductible and eligibility waiting period.
- Rows in this instance: 22
- Primary key:
plan_code(public ids are prefixedPLAN-) - Origin: Shared catalogue, identical in every instance, annotated with this instance's counts.
- Default sort:
categoryasc - Writable through MCP: no
- Read by:
list_benefit_plans,describe_hris_schema
Columns
| Column | Type | Writable | Description |
|---|---|---|---|
plan_code |
text | no | Plan code. primary key |
plan_name |
text | no | Plan name. |
category |
text | no | Benefit category. |
carrier |
text | no | Carrier. |
coverage_tier |
text | no | Coverage tier. |
employee_monthly_cost |
numeric | no | Employee monthly contribution. |
employer_monthly_cost |
numeric | no | Employer monthly contribution. |
deductible |
numeric | no | Annual deductible. |
eligibility_days |
integer | no | Waiting period in days. |
enrolled_count |
integer | no | Employees enrolled in this instance. |
Filters
| Filter | Kind | Applies to | Description |
|---|---|---|---|
category |
exact | category |
Benefit category. |
training_course
Training course — Learning catalogue, including which courses are mandatory and how often they must be renewed.
- Rows in this instance: 25
- Primary key:
course_code(public ids are prefixedCRS-) - Origin: Shared catalogue, identical in every instance, annotated with this instance's counts.
- Default sort:
course_codeasc - Writable through MCP: no
- Read by:
list_training_courses,get_compliance_training_status,describe_hris_schema
Columns
| Column | Type | Writable | Description |
|---|---|---|---|
course_code |
text | no | Course code. primary key |
title |
text | no | Course title. |
category |
text | no | Category. |
delivery |
text | no | Delivery mode. |
duration_minutes |
integer | no | Duration in minutes. |
is_mandatory |
boolean | no | Required for all employees. |
renewal_months |
integer | no | Renewal cadence in months. |
provider |
text | no | Training provider. |
completion_count |
integer | no | Completions recorded in this instance. |
Filters
| Filter | Kind | Applies to | Description |
|---|---|---|---|
category |
exact | category |
Category. |
is_mandatory |
boolean | is_mandatory |
Only mandatory courses. |
policy_document
Policy document — HR policy library. Full text is returned so an assistant can answer policy questions from source.
- Rows in this instance: 12
- Primary key:
policy_code(public ids are prefixedPOL-) - Origin: Shared catalogue, identical in every instance, annotated with this instance's counts.
- Default sort:
policy_codeasc - Writable through MCP: no
- Read by:
search_policies,describe_hris_schema
Columns
| Column | Type | Writable | Description |
|---|---|---|---|
policy_code |
text | no | Policy code. primary key |
title |
text | no | Policy title. |
category |
text | no | Policy category. |
summary |
text | no | One-paragraph summary. |
body |
text | no | Full policy text. |
owner_function |
text | no | Owning function. |
review_cycle_months |
integer | no | How often the policy is reviewed. |
Filters
| Filter | Kind | Applies to | Description |
|---|---|---|---|
category |
exact | category |
Policy category. |
payroll_run
Payroll run — The payroll calendar: two years of semi-monthly periods with status and totals.
- Rows in this instance: 48
- Primary key:
payroll_run_id(public ids are prefixedRUN-) - Origin: Projected from the shared master template and filtered to this instance's roster.
- Default sort:
pay_datedesc - Writable through MCP: no
- Read by:
list_payroll_runs,describe_hris_schema
Columns
| Column | Type | Writable | Description |
|---|---|---|---|
payroll_run_id |
text | no | Run identifier. primary key |
period_start |
date | no | Period start. |
period_end |
date | no | Period end. |
pay_date |
date | no | Payment date. |
status |
text | no | Run status. one of: draft, processing, approved, paid |
frequency |
text | no | Pay frequency. |
employee_count |
integer | no | Employees paid in this run. |
gross_total |
numeric | no | Total gross pay. |
net_total |
numeric | no | Total net pay. |
Filters
| Filter | Kind | Applies to | Description |
|---|---|---|---|
status |
exact | status |
Run status. |
Tools
52 tools are exposed on this endpoint. 36 are read-only; 16 change data.
| Tool | Kind | Reads / writes | Purpose |
|---|---|---|---|
search_employees |
read | employee |
Search the worker directory by name, email, job title or id, with optional filters on department, location, status, employment type, manager, career level, hire date and performance rating. |
get_employee |
read | employee |
Full worker record for one employee: identity, contact details, job and level, department, location, reporting line, employment status and dates, demographics and compensation. |
list_direct_reports |
read | employee |
Everyone who reports directly to a given manager. |
get_reporting_chain |
read | employee |
The full management chain from an employee up to the CEO, one row per level. |
get_org_snapshot |
read | employee, department, location |
Shape of the whole organisation: roster size, active headcount, management layers with the population and span of control at each, and the largest departments and locations. |
list_departments |
read | department |
Department catalogue with headcount, active headcount, average base pay and the most senior leader. |
list_locations |
read | location |
Work locations with country, timezone, currency, cost-of-living index and headcount. |
get_headcount_summary |
read | employee |
Headcount grouped by any one of department, location, country, career level, employment type, work arrangement or status, with active counts and average base pay per group. |
get_compensation_detail |
read | employee, job |
Current pay for one employee: base salary, currency, bonus target, equity, compa-ratio and where they sit in the pay band for their job and level. |
list_compensation_history |
read | compensation_event |
Pay changes over time: merit increases, promotions, market adjustments and retention awards. |
submit_compensation_change |
write | employee, compensation_event, audit_log |
Change an employee's base salary. |
get_pay_band_analysis |
read | employee |
Compensation distribution by career level for a department or the whole company: population, minimum, average and maximum base pay, average compa-ratio, and how many people sit outside the 0. |
list_payroll_runs |
read | payroll_run |
The payroll calendar: pay periods, pay dates, status and totals. |
get_payslips |
read | payslip |
Payslips for one employee: gross, base and bonus earnings, tax and benefit deductions, and net pay for each pay period. |
get_time_off_balances |
read | time_off_balance |
Accrued, taken, scheduled and available days for every leave type for one employee, derived from tenure, the accrual policy and approved absences. |
list_time_off_requests |
read | time_off_request |
Absence requests filtered by employee, status, leave type or date range. |
submit_time_off_request |
write | time_off_request, time_off_balance, audit_log |
Submit a time off request on behalf of an employee. |
decide_time_off_request |
write | time_off_request, audit_log |
Approve, deny or cancel a pending time off request. |
get_absence_summary |
read | time_off_request |
Absence volume by leave type and status across the company or one department, with total days requested. |
list_performance_reviews |
read | performance_review |
Completed reviews with rating, potential, calibration state and promotion readiness. |
get_performance_review |
read | performance_review |
One review in full, including written strengths, growth areas and narrative summary. |
submit_performance_review |
write | performance_review, employee, audit_log |
Record a performance review for an employee in the current cycle. |
list_goals |
read | goal |
Individual objectives with weighting, progress and status. |
update_goal_progress |
write | goal, audit_log |
Update how far along a goal is, and optionally its status. |
list_job_requisitions |
read | job_requisition |
Hiring requisitions with status, priority, openings, hiring manager and age. |
get_job_requisition |
read | job_requisition, candidate |
One requisition in full, with its candidate pipeline broken down by stage. |
open_job_requisition |
write | job_requisition, audit_log |
Open a new hiring requisition. |
list_candidates |
read | candidate |
Applicants with source, pipeline stage, rating and days in pipeline. |
advance_candidate |
write | candidate, audit_log |
Move a candidate to a new pipeline stage, for example from screen to interview, or to offer. |
get_recruiting_funnel |
read | candidate, job_requisition |
Candidate volume by pipeline stage and source, plus open requisition counts, so you can see where the funnel narrows and which channels are producing. |
transfer_employee |
write | employee, audit_log |
Move an employee to a different department, location or manager. |
promote_employee |
write | employee, compensation_event, audit_log |
Promote an employee to a higher level, with an optional pay increase. |
record_termination |
write | employee, audit_log |
Record that an employee is leaving the organisation. |
onboard_employee |
write | employee, training_record, audit_log |
Add a new hire to the roster, with their job, department, location, manager and start date. |
list_benefit_plans |
read | benefit_plan |
Benefit plan catalogue with carrier, tier, employee and employer cost, deductible and enrollment counts. |
get_benefit_enrollments |
read | benefit_enrollment |
Which plans an employee is enrolled in, with cost split and effective dates. |
enroll_in_benefit |
write | benefit_enrollment, audit_log |
Enroll an employee in a benefit plan. |
list_training_courses |
read | training_course |
Learning catalogue with category, delivery mode, duration, mandatory flag and renewal cadence. |
get_training_transcript |
read | training_record |
An employee's learning history with completion status, scores and certification expiry. |
assign_training |
write | training_record, audit_log |
Assign a course to an employee. |
list_hr_cases |
read | hr_case |
Employee-relations matters with type, severity, status, assignment, SLA due date and whether the SLA has been breached. |
get_hr_case |
read | hr_case, hr_case_note |
One case in full, with its chronological notes. |
open_hr_case |
write | hr_case, audit_log |
Open an employee-relations case: a conduct concern, grievance, accommodation request, safety report or policy question. |
add_case_note |
write | hr_case_note, hr_case, audit_log |
Record a note against an employee-relations case. |
resolve_hr_case |
write | hr_case, audit_log |
Move a case forward: investigating, pending review, resolved or closed. |
get_attrition_report |
read | employee |
Leavers broken down by reason and whether the departure was voluntary, with attrition rate against the current roster, optionally scoped to a department. |
get_diversity_report |
read | employee |
Representation by gender or ethnicity, optionally cut by career level, so you can see how representation changes as seniority increases. |
get_compliance_training_status |
read | training_record, training_course |
Completion state for mandatory compliance training, by course, with the number overdue. |
search_policies |
read | policy_document |
Search the HR policy library and return full policy text, so a question about leave, pay, conduct or accommodations can be answered from source rather than paraphrased. |
list_recent_changes |
read | audit_log |
Everything any MCP tool has written to this instance, newest first. |
describe_hris_schema |
read | employee, compensation_event, time_off_request, performance_review, … |
The complete data dictionary for this endpoint: every entity, every column with its type and meaning, row counts for this instance, and which tools read or write each one. |
get_instance_info |
read | employee |
What this endpoint is: the company it represents, its roster size, when it was provisioned, how many writes it has taken, and where to browse or document it. |
Directory & org
search_employees
Search employees — read-only
Search the worker directory by name, email, job title or id, with optional filters on department, location, status, employment type, manager, career level, hire date and performance rating. The primary way to find a person before acting on them.
Touches: employee
| Argument | Type | Required | Description |
|---|---|---|---|
query |
string | no | Free text matched against name, work email, job title and employee id. |
department_code |
string | no | Department code, e.g. ENG. See list_departments. |
location_code |
string | no | Location code, e.g. US-NYC. See list_locations. |
employment_status |
active | on_leave | terminated |
no | Employment status. |
employment_type |
string | no | Employment type, e.g. "Full-time regular". |
work_arrangement |
string | no | On-site, Hybrid or Remote. |
manager_id |
string | no | Return only the direct reports of this manager, e.g. EMP-0000042. |
job_level_min |
integer | no | Minimum career level, 0 (associate) to 10 (CEO). |
job_level_max |
integer | no | Maximum career level. |
hired_after |
string | no | Only employees hired on or after this date. |
hired_before |
string | no | Only employees hired on or before this date. |
performance_rating |
integer | no | Exact most-recent performance rating, 1 to 5. |
is_people_manager |
boolean | no | Only people managers. |
sort |
string | no | Column to sort by. Defaults to employee_id. |
direction |
asc | desc |
no | Sort direction. |
limit |
integer | no | Maximum rows to return. Default 25, maximum 200. |
offset |
integer | no | Rows to skip, for paging through a large result. |
get_employee
Get employee — read-only
Full worker record for one employee: identity, contact details, job and level, department, location, reporting line, employment status and dates, demographics and compensation.
Touches: employee
| Argument | Type | Required | Description |
|---|---|---|---|
employee_id |
string | yes | Employee id, e.g. EMP-0000042. |
list_direct_reports
List direct reports — read-only
Everyone who reports directly to a given manager.
Touches: employee
| Argument | Type | Required | Description |
|---|---|---|---|
manager_id |
string | yes | Manager employee id, e.g. EMP-0000002. |
include_terminated |
boolean | no | Include reports who have left. Defaults to false. |
limit |
integer | no | Maximum rows to return. Default 25, maximum 200. |
offset |
integer | no | Rows to skip, for paging through a large result. |
get_reporting_chain
Get reporting chain — read-only
The full management chain from an employee up to the CEO, one row per level. Useful for escalation, approval routing and understanding where someone sits in the organisation.
Touches: employee
| Argument | Type | Required | Description |
|---|---|---|---|
employee_id |
string | yes | Employee id to walk upward from. |
get_org_snapshot
Get organisation snapshot — read-only
Shape of the whole organisation: roster size, active headcount, management layers with the population and span of control at each, and the largest departments and locations.
Touches: employee, department, location
Arguments: none.
list_departments
List departments — read-only
Department catalogue with headcount, active headcount, average base pay and the most senior leader.
Touches: department
| Argument | Type | Required | Description |
|---|---|---|---|
function |
string | no | Restrict to one function grouping, e.g. Technology. |
limit |
integer | no | Maximum rows to return. Default 25, maximum 200. |
offset |
integer | no | Rows to skip, for paging through a large result. |
list_locations
List locations — read-only
Work locations with country, timezone, currency, cost-of-living index and headcount.
Touches: location
| Argument | Type | Required | Description |
|---|---|---|---|
country_code |
string | no | ISO 3166-1 alpha-2 country code, e.g. US. |
limit |
integer | no | Maximum rows to return. Default 25, maximum 200. |
offset |
integer | no | Rows to skip, for paging through a large result. |
get_headcount_summary
Get headcount summary — read-only
Headcount grouped by any one of department, location, country, career level, employment type, work arrangement or status, with active counts and average base pay per group.
Touches: employee
| Argument | Type | Required | Description |
|---|---|---|---|
group_by |
department | location | country | level | employment_type | work_arrangement | status |
no | Dimension to group by. Defaults to department. |
department_code |
string | no | Restrict to one department. |
location_code |
string | no | Restrict to one location. |
Compensation
get_compensation_detail
Get compensation detail — read-only
Current pay for one employee: base salary, currency, bonus target, equity, compa-ratio and where they sit in the pay band for their job and level.
Touches: employee, job
| Argument | Type | Required | Description |
|---|---|---|---|
employee_id |
string | yes | Employee id. |
list_compensation_history
List compensation history — read-only
Pay changes over time: merit increases, promotions, market adjustments and retention awards.
Touches: compensation_event
| Argument | Type | Required | Description |
|---|---|---|---|
employee_id |
string | no | Restrict to one employee. |
event_type |
string | no | Restrict to one kind of change, e.g. Promotion. |
effective_after |
string | no | Only changes effective on or after this date. |
effective_before |
string | no | Only changes effective on or before this date. |
limit |
integer | no | Maximum rows to return. Default 25, maximum 200. |
offset |
integer | no | Rows to skip, for paging through a large result. |
submit_compensation_change
Submit compensation change — writes data
Change an employee's base salary. Records the new amount, the reason and the effective date, and warns if the result falls outside the pay band for their job and level.
What it changes: Writes the new base salary onto the employee record in this instance's overlay, appends a compensation event carrying the reason and percentage, and records an audit entry. The shared template is untouched, so no other instance sees the change.
Touches: employee, compensation_event, audit_log
| Argument | Type | Required | Description |
|---|---|---|---|
employee_id |
string | yes | Employee whose pay is changing. |
new_base_salary |
number | yes | New annual base salary in the employee's pay currency. |
reason |
string | yes | Business justification, e.g. "Annual merit cycle" or "Promotion to Senior Manager". |
event_type |
Merit increase | Promotion | Market adjustment | Retention award | Role change | Cost-of-living adjustment | Off-cycle adjustment | Internal transfer adjustment |
no | Kind of change being recorded. |
effective_date |
string | no | Date the change takes effect. Defaults to today. |
get_pay_band_analysis
Get pay band analysis — read-only
Compensation distribution by career level for a department or the whole company: population, minimum, average and maximum base pay, average compa-ratio, and how many people sit outside the 0.85-1.15 compa-ratio range that normally triggers a pay review.
Touches: employee
| Argument | Type | Required | Description |
|---|---|---|---|
department_code |
string | no | Restrict to one department. |
location_code |
string | no | Restrict to one location. |
list_payroll_runs
List payroll runs — read-only
The payroll calendar: pay periods, pay dates, status and totals.
Touches: payroll_run
| Argument | Type | Required | Description |
|---|---|---|---|
status |
string | no | Restrict to one run status. |
limit |
integer | no | Maximum rows to return. Default 25, maximum 200. |
offset |
integer | no | Rows to skip, for paging through a large result. |
get_payslips
Get payslips — read-only
Payslips for one employee: gross, base and bonus earnings, tax and benefit deductions, and net pay for each pay period. Computed on demand from the employee record and the payroll calendar.
Touches: payslip
| Argument | Type | Required | Description |
|---|---|---|---|
employee_id |
string | yes | Employee id. |
payroll_run_id |
string | no | Restrict to one payroll run, e.g. RUN-0048. |
limit |
integer | no | Maximum rows to return. Default 25, maximum 200. |
offset |
integer | no | Rows to skip, for paging through a large result. |
Time off
get_time_off_balances
Get time off balances — read-only
Accrued, taken, scheduled and available days for every leave type for one employee, derived from tenure, the accrual policy and approved absences.
Touches: time_off_balance
| Argument | Type | Required | Description |
|---|---|---|---|
employee_id |
string | yes | Employee id. |
leave_type_code |
string | no | Restrict to one leave type, e.g. PTO. |
list_time_off_requests
List time off requests — read-only
Absence requests filtered by employee, status, leave type or date range.
Touches: time_off_request
| Argument | Type | Required | Description |
|---|---|---|---|
employee_id |
string | no | Restrict to one employee. |
status |
pending | approved | denied | cancelled | taken |
no | Request status. |
leave_type_code |
string | no | Leave type code, e.g. PTO or SICK. |
start_after |
string | no | Absences starting on or after this date. |
start_before |
string | no | Absences starting on or before this date. |
limit |
integer | no | Maximum rows to return. Default 25, maximum 200. |
offset |
integer | no | Rows to skip, for paging through a large result. |
submit_time_off_request
Submit time off request — writes data
Submit a time off request on behalf of an employee. Validates the dates and warns if the request exceeds the available balance for that leave type.
What it changes: Creates a pending absence request in this instance's overlay and records an audit entry. The request immediately appears in list_time_off_requests and counts against the employee's scheduled days once approved.
Touches: time_off_request, time_off_balance, audit_log
| Argument | Type | Required | Description |
|---|---|---|---|
employee_id |
string | yes | Employee taking the leave. |
leave_type_code |
string | yes | Leave type code, e.g. PTO, SICK, PARENT. See the schema documentation. |
start_date |
string | yes | First day of absence. |
end_date |
string | yes | Last day of absence. |
note |
string | no | Reason or context for the request. |
decide_time_off_request
Approve or deny time off — writes data
Approve, deny or cancel a pending time off request.
What it changes: Sets the request status to approved, denied or cancelled, stamps the decision date and the deciding manager, and records an audit entry.
Touches: time_off_request, audit_log
| Argument | Type | Required | Description |
|---|---|---|---|
request_id |
string | yes | Request id, e.g. TOR-0000120-1 or TOR-N-000003. |
decision |
approved | denied | cancelled |
yes | Outcome to record. |
decision_note |
string | no | Note explaining the decision. |
approver_id |
string | no | Employee id of the approver. Defaults to the employee's manager. |
get_absence_summary
Get absence summary — read-only
Absence volume by leave type and status across the company or one department, with total days requested. Useful for spotting leave concentration and pending-approval backlogs.
Touches: time_off_request
| Argument | Type | Required | Description |
|---|---|---|---|
status |
string | no | Restrict to one request status. |
Performance
list_performance_reviews
List performance reviews — read-only
Completed reviews with rating, potential, calibration state and promotion readiness.
Touches: performance_review
| Argument | Type | Required | Description |
|---|---|---|---|
employee_id |
string | no | Restrict to one employee. |
cycle_code |
string | no | Review cycle code, e.g. FY-PRV-EOY. |
rating |
integer | no | Exact overall rating, 1 to 5. |
promotion_ready |
boolean | no | Only employees flagged ready for promotion. |
limit |
integer | no | Maximum rows to return. Default 25, maximum 200. |
offset |
integer | no | Rows to skip, for paging through a large result. |
get_performance_review
Get performance review — read-only
One review in full, including written strengths, growth areas and narrative summary.
Touches: performance_review
| Argument | Type | Required | Description |
|---|---|---|---|
review_id |
string | yes | Review id, e.g. REV-0000012-0. |
submit_performance_review
Submit performance review — writes data
Record a performance review for an employee in the current cycle.
What it changes: Creates a review record in this instance's overlay, updates the employee's current performance rating, and records an audit entry.
Touches: performance_review, employee, audit_log
| Argument | Type | Required | Description |
|---|---|---|---|
employee_id |
string | yes | Employee being reviewed. |
rating |
integer | yes | Overall rating, 1 (unsatisfactory) to 5 (outstanding). |
summary |
string | yes | Narrative summary of the review. |
strengths |
string | no | What the employee does well. |
growth_areas |
string | no | Where the employee should develop. |
potential |
Low potential | Moderate potential | High potential |
no | Nine-box potential axis. |
promotion_ready |
boolean | no | Whether the employee is ready for the next level. |
cycle_code |
string | no | Review cycle. Defaults to the current mid-year cycle. |
list_goals
List goals — read-only
Individual objectives with weighting, progress and status.
Touches: goal
| Argument | Type | Required | Description |
|---|---|---|---|
employee_id |
string | no | Restrict to one employee. |
status |
on_track | at_risk | off_track | achieved | cancelled |
no | Goal status. |
category |
string | no | Goal category, e.g. Business results. |
limit |
integer | no | Maximum rows to return. Default 25, maximum 200. |
offset |
integer | no | Rows to skip, for paging through a large result. |
update_goal_progress
Update goal progress — writes data
Update how far along a goal is, and optionally its status.
What it changes: Writes the new progress and status onto the goal in this instance's overlay and records an audit entry.
Touches: goal, audit_log
| Argument | Type | Required | Description |
|---|---|---|---|
goal_id |
string | yes | Goal id, e.g. GOL-0000018-0. |
progress_pct |
integer | yes | Percent complete, 0 to 100. |
status |
on_track | at_risk | off_track | achieved | cancelled |
no | New status. |
Recruiting
list_job_requisitions
List job requisitions — read-only
Hiring requisitions with status, priority, openings, hiring manager and age.
Touches: job_requisition
| Argument | Type | Required | Description |
|---|---|---|---|
status |
draft | open | on_hold | filled | cancelled |
no | Requisition status. |
department_code |
string | no | Hiring department code. |
location_code |
string | no | Work location code. |
priority |
low | medium | high | critical |
no | Business priority. |
hiring_manager_id |
string | no | Restrict to one hiring manager. |
limit |
integer | no | Maximum rows to return. Default 25, maximum 200. |
offset |
integer | no | Rows to skip, for paging through a large result. |
get_job_requisition
Get job requisition — read-only
One requisition in full, with its candidate pipeline broken down by stage.
Touches: job_requisition, candidate
| Argument | Type | Required | Description |
|---|---|---|---|
requisition_id |
string | yes | Requisition id, e.g. REQ-000042. |
open_job_requisition
Open job requisition — writes data
Open a new hiring requisition.
What it changes: Creates an open requisition in this instance's overlay with the supplied role, department, location and headcount, and records an audit entry.
Touches: job_requisition, audit_log
| Argument | Type | Required | Description |
|---|---|---|---|
job_title |
string | yes | Role being hired. |
department_code |
string | yes | Hiring department code, e.g. ENG. |
location_code |
string | no | Work location code, e.g. US-NYC. |
hiring_manager_id |
string | yes | Hiring manager employee id. |
openings |
integer | no | Number of approved openings. Defaults to 1. |
job_level |
integer | no | Career level of the opening, 0 to 10. |
priority |
low | medium | high | critical |
no | Business priority. Defaults to medium. |
remote_eligible |
boolean | no | Whether the role is open to remote candidates. |
list_candidates
List candidates — read-only
Applicants with source, pipeline stage, rating and days in pipeline.
Touches: candidate
| Argument | Type | Required | Description |
|---|---|---|---|
requisition_id |
string | no | Restrict to one requisition. |
stage |
applied | screen | interview | onsite | offer | hired | rejected | withdrawn |
no | Pipeline stage. |
source |
string | no | Sourcing channel, e.g. Employee referral. |
query |
string | no | Free text across candidate name, email and role. |
limit |
integer | no | Maximum rows to return. Default 25, maximum 200. |
offset |
integer | no | Rows to skip, for paging through a large result. |
advance_candidate
Advance candidate — writes data
Move a candidate to a new pipeline stage, for example from screen to interview, or to offer.
What it changes: Moves the candidate to the requested stage in this instance's overlay, stamps the activity date, optionally records an interview rating, and records an audit entry.
Touches: candidate, audit_log
| Argument | Type | Required | Description |
|---|---|---|---|
candidate_id |
string | yes | Candidate id, e.g. CAND-001234. |
stage |
applied | screen | interview | onsite | offer | hired | rejected | withdrawn |
yes | New pipeline stage. |
rating |
integer | no | Interview rating, 1 to 5. |
notes |
string | no | Recruiter notes explaining the decision. |
get_recruiting_funnel
Get recruiting funnel — read-only
Candidate volume by pipeline stage and source, plus open requisition counts, so you can see where the funnel narrows and which channels are producing.
Touches: candidate, job_requisition
| Argument | Type | Required | Description |
|---|---|---|---|
requisition_id |
string | no | Restrict to one requisition. |
Lifecycle
transfer_employee
Transfer employee — writes data
Move an employee to a different department, location or manager.
What it changes: Writes the new department, location and/or manager onto the employee record in this instance's overlay and records an audit entry. Reporting lines below the employee are unchanged; their reports move with them.
Touches: employee, audit_log
| Argument | Type | Required | Description |
|---|---|---|---|
employee_id |
string | yes | Employee being transferred. |
new_department_name |
string | no | New department name. |
new_location_code |
string | no | New work location code, e.g. UK-LON. |
new_manager_id |
string | no | New manager employee id. |
effective_date |
string | no | Date the transfer takes effect. Defaults to today. |
reason |
string | no | Reason for the transfer. |
promote_employee
Promote employee — writes data
Promote an employee to a higher level, with an optional pay increase.
What it changes: Raises the employee's career level and title, optionally applies a new salary, writes a promotion compensation event, and records an audit entry.
Touches: employee, compensation_event, audit_log
| Argument | Type | Required | Description |
|---|---|---|---|
employee_id |
string | yes | Employee being promoted. |
new_job_title |
string | yes | New job title. |
new_job_level |
integer | no | New career level, 0 to 10. Must be above the current level. |
new_base_salary |
number | no | New annual base salary. Optional. |
effective_date |
string | no | Date the promotion takes effect. Defaults to today. |
reason |
string | no | Justification for the promotion. |
record_termination
Record termination — writes data
Record that an employee is leaving the organisation.
What it changes: Marks the employee terminated with a last working day and reason in this instance's overlay, and records an audit entry. They stop counting toward active headcount but remain in the roster for reporting.
Touches: employee, audit_log
| Argument | Type | Required | Description |
|---|---|---|---|
employee_id |
string | yes | Departing employee. |
termination_date |
string | yes | Last working day. |
reason |
string | yes | Reason for leaving, e.g. "Resignation - better opportunity". |
voluntary |
boolean | no | Whether the employee chose to leave. Defaults to true. |
onboard_employee
Onboard employee — writes data
Add a new hire to the roster, with their job, department, location, manager and start date. Mandatory onboarding training is assigned automatically.
What it changes: Creates a new employee record in this instance's overlay, assigns the mandatory onboarding courses, and records an audit entry. The new record is visible to every subsequent read on this endpoint and to no other instance.
Touches: employee, training_record, audit_log
| Argument | Type | Required | Description |
|---|---|---|---|
full_name |
string | yes | New hire full name. |
job_title |
string | yes | Job title. |
department_name |
string | no | Department name. |
location_code |
string | no | Work location code, e.g. US-AUS. |
manager_id |
string | yes | Manager employee id. |
hire_date |
string | no | Start date. Defaults to today. |
base_salary |
number | no | Annual base salary. |
job_level |
integer | no | Career level, 0 to 10. |
employment_type |
string | no | Employment type. Defaults to "Full-time regular". |
work_arrangement |
string | no | On-site, Hybrid or Remote. |
Benefits & learning
list_benefit_plans
List benefit plans — read-only
Benefit plan catalogue with carrier, tier, employee and employer cost, deductible and enrollment counts.
Touches: benefit_plan
| Argument | Type | Required | Description |
|---|---|---|---|
category |
string | no | Benefit category, e.g. Medical. |
limit |
integer | no | Maximum rows to return. Default 25, maximum 200. |
offset |
integer | no | Rows to skip, for paging through a large result. |
get_benefit_enrollments
Get benefit enrollments — read-only
Which plans an employee is enrolled in, with cost split and effective dates.
Touches: benefit_enrollment
| Argument | Type | Required | Description |
|---|---|---|---|
employee_id |
string | no | Restrict to one employee. |
plan_code |
string | no | Restrict to one plan. |
category |
string | no | Restrict to one benefit category. |
status |
active | waived | terminated | pending |
no | Enrollment status. |
limit |
integer | no | Maximum rows to return. Default 25, maximum 200. |
offset |
integer | no | Rows to skip, for paging through a large result. |
enroll_in_benefit
Enroll in benefit — writes data
Enroll an employee in a benefit plan.
What it changes: Creates an active enrollment in this instance's overlay with the plan's cost split, and records an audit entry.
Touches: benefit_enrollment, audit_log
| Argument | Type | Required | Description |
|---|---|---|---|
employee_id |
string | yes | Employee enrolling. |
plan_code |
string | yes | Plan code, e.g. MED-PPO-EE. See list_benefit_plans. |
dependents |
integer | no | Number of covered dependents. |
effective_date |
string | no | Coverage start date. Defaults to today. |
list_training_courses
List training courses — read-only
Learning catalogue with category, delivery mode, duration, mandatory flag and renewal cadence.
Touches: training_course
| Argument | Type | Required | Description |
|---|---|---|---|
category |
string | no | Course category, e.g. Compliance. |
is_mandatory |
boolean | no | Only mandatory courses. |
limit |
integer | no | Maximum rows to return. Default 25, maximum 200. |
offset |
integer | no | Rows to skip, for paging through a large result. |
get_training_transcript
Get training transcript — read-only
An employee's learning history with completion status, scores and certification expiry.
Touches: training_record
| Argument | Type | Required | Description |
|---|---|---|---|
employee_id |
string | no | Restrict to one employee. |
status |
completed | in_progress | not_started | overdue |
no | Completion status. |
course_code |
string | no | Restrict to one course. |
is_mandatory |
boolean | no | Only mandatory training. |
limit |
integer | no | Maximum rows to return. Default 25, maximum 200. |
offset |
integer | no | Rows to skip, for paging through a large result. |
assign_training
Assign training — writes data
Assign a course to an employee.
What it changes: Creates a not-started training record in this instance's overlay and records an audit entry.
Touches: training_record, audit_log
| Argument | Type | Required | Description |
|---|---|---|---|
employee_id |
string | yes | Employee to assign the course to. |
course_code |
string | yes | Course code, e.g. CMP-110. See list_training_courses. |
due_date |
string | no | When the course must be completed by. |
Employee relations
list_hr_cases
List HR cases — read-only
Employee-relations matters with type, severity, status, assignment, SLA due date and whether the SLA has been breached.
Touches: hr_case
| Argument | Type | Required | Description |
|---|---|---|---|
subject_employee_id |
string | no | Cases concerning one employee. |
status |
open | investigating | pending_review | resolved | closed |
no | Case status. |
severity |
low | medium | high | critical |
no | Assessed severity. |
case_type_code |
string | no | Case type code, e.g. HARASS or ACCOM. |
opened_after |
string | no | Cases opened on or after this date. |
sla_breached |
boolean | no | Only cases past their SLA. |
query |
string | no | Free text across case summary and id. |
limit |
integer | no | Maximum rows to return. Default 25, maximum 200. |
offset |
integer | no | Rows to skip, for paging through a large result. |
get_hr_case
Get HR case — read-only
One case in full, with its chronological notes.
Touches: hr_case, hr_case_note
| Argument | Type | Required | Description |
|---|---|---|---|
case_id |
string | yes | Case id, e.g. CASE-0000097-0. |
include_internal_notes |
boolean | no | Include notes marked HR-only. Defaults to true. |
open_hr_case
Open HR case — writes data
Open an employee-relations case: a conduct concern, grievance, accommodation request, safety report or policy question.
What it changes: Creates an open case in this instance's overlay with an SLA due date derived from the case type, and records an audit entry.
Touches: hr_case, audit_log
| Argument | Type | Required | Description |
|---|---|---|---|
case_type_code |
string | yes | Case type code, e.g. CONDUCT, ACCOM, SAFETY, GRIEV. |
summary |
string | yes | What the case is about. |
subject_employee_id |
string | no | Employee the case concerns. Omit for an anonymous report. |
severity |
low | medium | high | critical |
no | Assessed severity. Defaults to the type default. |
assigned_to_id |
string | no | HR partner to assign the case to. |
anonymous |
boolean | no | Whether the report was made anonymously. |
add_case_note
Add case note — writes data
Record a note against an employee-relations case.
What it changes: Appends a note to the case in this instance's overlay, increments the case note count, and records an audit entry.
Touches: hr_case_note, hr_case, audit_log
| Argument | Type | Required | Description |
|---|---|---|---|
case_id |
string | yes | Case id. |
body |
string | yes | Note text. |
author_id |
string | no | Employee id of the author. |
internal |
boolean | no | Mark the note HR-only. Defaults to true. |
resolve_hr_case
Resolve HR case — writes data
Move a case forward: investigating, pending review, resolved or closed.
What it changes: Sets the case status and resolution, stamps the closed date when closing, and records an audit entry.
Touches: hr_case, audit_log
| Argument | Type | Required | Description |
|---|---|---|---|
case_id |
string | yes | Case id. |
status |
open | investigating | pending_review | resolved | closed |
yes | New case status. |
resolution |
string | no | Outcome and any corrective action taken. |
Analytics
get_attrition_report
Get attrition report — read-only
Leavers broken down by reason and whether the departure was voluntary, with attrition rate against the current roster, optionally scoped to a department.
Touches: employee
| Argument | Type | Required | Description |
|---|---|---|---|
department_code |
string | no | Restrict to one department. |
get_diversity_report
Get diversity report — read-only
Representation by gender or ethnicity, optionally cut by career level, so you can see how representation changes as seniority increases. Mock data only.
Touches: employee
| Argument | Type | Required | Description |
|---|---|---|---|
dimension |
gender | ethnicity |
no | Dimension to report on. Defaults to gender. |
by_level |
boolean | no | Break the result down by career level as well. |
department_code |
string | no | Restrict to one department. |
get_compliance_training_status
Get compliance training status — read-only
Completion state for mandatory compliance training, by course, with the number overdue. The report an auditor asks for.
Touches: training_record, training_course
Arguments: none.
search_policies
Search HR policies — read-only
Search the HR policy library and return full policy text, so a question about leave, pay, conduct or accommodations can be answered from source rather than paraphrased.
Touches: policy_document
| Argument | Type | Required | Description |
|---|---|---|---|
query |
string | no | Free text matched against policy title, summary and body. |
category |
string | no | Policy category, e.g. Time off. |
limit |
integer | no | Maximum rows to return. Default 25, maximum 200. |
offset |
integer | no | Rows to skip, for paging through a large result. |
list_recent_changes
List recent changes — read-only
Everything any MCP tool has written to this instance, newest first. A freshly provisioned endpoint has exactly one entry: its own creation.
Touches: audit_log
| Argument | Type | Required | Description |
|---|---|---|---|
entity |
string | no | Restrict to one entity, e.g. employee. |
entity_id |
string | no | Restrict to one record. |
tool |
string | no | Restrict to one tool name. |
limit |
integer | no | Maximum rows to return. Default 25, maximum 200. |
offset |
integer | no | Rows to skip, for paging through a large result. |
Reference
describe_hris_schema
Describe HRIS schema — read-only
The complete data dictionary for this endpoint: every entity, every column with its type and meaning, row counts for this instance, and which tools read or write each one. Call this first to understand what is available before querying.
Touches: employee, compensation_event, time_off_request, performance_review, goal, benefit_enrollment, training_record, hr_case, hr_case_note, job_requisition, candidate, payslip, time_off_balance, audit_log, department, location, job, benefit_plan, training_course, policy_document, payroll_run
| Argument | Type | Required | Description |
|---|---|---|---|
entity |
string | no | Describe one entity in full. Omit for the whole schema summary. |
get_instance_info
Get instance info — read-only
What this endpoint is: the company it represents, its roster size, when it was provisioned, how many writes it has taken, and where to browse or document it.
Touches: employee
Arguments: none.
Connecting
Add this endpoint as a custom MCP connector. No token, header or sign-in is required.
https://hr-safe-space.cheek.org/i/load-j1yko-0039/mcp
Claude Code:
claude mcp add --transport http load-j1yko-0039 https://hr-safe-space.cheek.org/i/load-j1yko-0039/mcp
Any MCP client that speaks Streamable HTTP, as JSON configuration:
{
"mcpServers": {
"load-j1yko-0039": {
"type": "http",
"url": "https://hr-safe-space.cheek.org/i/load-j1yko-0039/mcp"
}
}
}
Pick any new key to get a different company:
https://hr-safe-space.cheek.org/i/<your-key>/mcp
Valid keys are 4–64 characters of lowercase letters, digits and single hyphens.