WorkRight MCP Tool Catalog
The complete catalog of MCP tools the WorkRight server exposes to AI assistants such as Claude, Claude Code and Cursor. Generated directly from the live tool registry, so it stays accurate. New to the MCP server? Start with the MCP overview or the quickstart.
WorkRight exposes 114 MCP tools — 87 read and 27 write — across 19 modules. Every tool is capability-gated and tenant-scoped: a token only sees the tools its capabilities allow, and every call is confined to the token's own company.
Showing 114 of 114 tools.
Accounting19 tools
create_contactwriteaccounting.journalCreate a contact (customer / vendor / employee / other) in the company's accounting master data. Returns the new contact id. Kind is fixed at creation (corrections are done by archiving + recreating from the dashboard).
create_draft_billwriteaccounting.journalCreate a DRAFT accounts-payable bill from a vendor. The bill is created in 'draft' status and is NOT posted to the ledger — posting stays a dashboard action. Money is in paise. Provide `lines` as a JSON array of {description, quantity, unit_price_minor, tax_rate_bps, account_id, optional item_id}; totals are computed for you.
create_draft_invoicewriteaccounting.journalCreate a DRAFT accounts-receivable invoice for a customer. The invoice is created in 'draft' status and is NOT posted to the ledger — posting (which is the irreversible Companies Act act) stays a dashboard action. Money is in paise (₹1 = 100 paise). Provide `lines` as a JSON array of {description, quantity, unit_price_minor, tax_rate_bps, account_id, optional item_id}; line and document totals are computed for you.
create_draft_paymentwriteaccounting.journalCreate a DRAFT payment to a vendor (an accounts-payable settlement). The payment is created in 'draft' status and is NOT posted to the ledger — posting stays a dashboard action. Allocations to specific bills are optional and can be added later from the dashboard. Money is in paise (₹1 = 100 paise).
create_draft_receiptwriteaccounting.journalCreate a DRAFT receipt from a customer (an accounts-receivable settlement). The receipt is created in 'draft' status and is NOT posted to the ledger — posting stays a dashboard action. Allocations to specific invoices are optional and can be added later from the dashboard. Money is in paise (₹1 = 100 paise).
create_itemwriteaccounting.journalCreate a goods/service item in the company's accounting master data. Returns the new item id. The code must be unique within the company; kind is fixed at creation.
get_billreadaccounting.viewGet one AP bill by ID (number, vendor contact, dates, subtotal/tax/total/paid, TDS, status).
get_contactreadaccounting.viewGet one accounting contact by ID (name, kind, email, phone, GSTIN, state). PAN/TAN are masked to a presence flag.
get_invoicereadaccounting.viewGet one AR invoice by ID (number, contact, dates, subtotal/tax/total/paid, status).
get_itemreadaccounting.viewGet one accounting item by ID (code, name, kind, HSN/SAC, default tax rate, default accounts).
get_period_lock_statusreadaccounting.viewGet the accounting period-lock status: through which period-end the books are closed, and how many periods are locked. Read-only (does NOT lock periods).
list_accountsreadaccounting.viewList the tenant's chart of accounts (code, name, type, Schedule III head). Optionally filter by account type.
list_billsreadaccounting.viewList accounting bills (accounts payable). Optionally filter by status.
list_contactsreadaccounting.viewList accounting contacts (customers/vendors/employees). Optionally filter by kind or search by name. PAN/TAN are not returned.
list_invoicesreadaccounting.viewList accounting invoices (accounts receivable). Optionally filter by status.
list_itemsreadaccounting.viewList accounting items (goods/services) with code, name, kind, HSN/SAC, and default tax rate.
list_journal_entriesreadaccounting.viewList posted journal entries, newest first (entry no, date, narration, source, total). Optionally filter by source type.
list_paymentsreadaccounting.viewList accounting payments made (accounts payable settlements). Optionally filter by status.
list_receiptsreadaccounting.viewList accounting receipts received (accounts receivable settlements). Optionally filter by status.
Announcement1 tool
list_announcementsreadannouncement.viewList the tenant's active company announcements (title, body, pinned flag, posted/expiry dates). Expired announcements are excluded.
Compliance6 tools
get_compliance_statusreadposh.viewGet the tenant's POSH training compliance summary: how many employees are compliant, in-progress, or not started.
get_training_progressreadposh.viewGet the calling user's own POSH training progress per module (status, current scene, completion timestamps). Scoped to the token's own user — it cannot read another employee's progress.
list_certificatesreadposh.viewList the calling user's own POSH training certificates (number, issue/expiry dates, revocation status). Scoped to the token's own user.
list_posh_annual_reportsreadposh.viewList the tenant's statutory POSH annual reports (POSH Act 2013 s.21) by year and status. Optionally filter by status. Report data is counts-only aggregate; no complainant identities are ever exposed.
list_posh_policiesreadposh.viewList the tenant's POSH policy documents (title, version, status). Optionally filter by status (draft, published, archived). Does NOT return the full policy body.
list_training_modulesreadposh.viewList the POSH training modules available in the platform (global content). Returns title, duration, mandatory flag and passing score.
Expense5 tools
get_expensereadexpense.viewGet a single expense submission by ID, including amount, category, merchant, status, and approval decision.
list_expense_categoriesreadexpense.viewList the tenant's expense categories (name, GL code, receipt requirement, per-claim cap).
list_expensesreadexpense.viewList expense submissions. Optionally filter by employee, status, or category.
list_reimbursement_batchesreadexpense.viewList expense reimbursement batches. Optionally filter by status.
submit_expensewriteexpense.submitSubmit an expense claim on your own behalf (the caller's user). Files the claim and immediately submits it for approval. The amount is in paise (₹1 = 100 paise). The category must belong to your company and be active; categories that require a receipt cannot be submitted this way (create the draft from the dashboard and attach a receipt first). The actor is always the token's own user — you cannot file on behalf of someone else.
Helpdesk3 tools
create_helpdesk_ticketwritehelpdesk.writeRaise a helpdesk / HR-query ticket on your own behalf (the caller's user). Priority is always 'normal' (only HR can escalate, from the dashboard). The actor is the token's own user — you cannot raise a ticket as someone else.
get_ticketreadhelpdesk.viewGet a single helpdesk ticket (subject, description, status, priority, timestamps). Does NOT return HR-private internal notes.
list_ticketsreadhelpdesk.viewList the tenant's helpdesk tickets (subject, category, status, priority). Optionally filter by status, category or priority.
Hiring12 tools
create_draft_candidatewritehiring.createAdd a candidate to the talent pool (source 'manual'). If a candidate with the same email already exists in your tenant, the existing record is returned (idempotent — no duplicate is created). No résumé file is attached via this tool.
create_draft_offerwritehiring.createCreate a DRAFT offer for an active application (CTC in paise + joining date). The offer is created in 'draft' status — SENDING it to the candidate stays a dashboard action. One offer per application.
create_draft_requisitionwritehiring.createCreate a job requisition (open role) in DRAFT status. Opening it for applications / running the approval flow stays a dashboard action — this tool only drafts. employment_type is one of full_time, part_time, contract, intern.
get_candidatereadhiring.viewGet a single candidate's profile (name, email, source). Does NOT return the resume file, phone number, or any other PII beyond what the role-filtered candidate list returns.
get_offerreadhiring.viewGet a single offer's detail by offer ID. Never returns the accept token, candidate signature, or PDF storage key.
get_requisitionreadhiring.viewGet a single job requisition's detail.
list_candidate_messagesreadhiring.viewList the communication timeline (emails sent) for a single candidate.
list_candidatesreadhiring.viewList candidates in the tenant's talent pool. Optionally filter by source. Returns name, email and source — never resume files or phone numbers.
list_interviewsreadhiring.viewList scheduled interviews in the tenant. Optionally filter by status (scheduled, completed, cancelled, no_show). Never returns the private meeting/join URL.
list_offersreadhiring.viewList offers in the tenant. Optionally filter by status (draft, sent, accepted, declined, withdrawn). Never returns the candidate's accept token or e-signature.
list_requisitionsreadhiring.viewList job requisitions (open roles) in the tenant. Optionally filter by status (draft, open, on_hold, closed, cancelled).
move_candidate_stagewritehiring.editMove a candidate's application to another pipeline stage in your tenant. Moving to a REJECTED stage requires a reject_reason. Moving to the HIRED stage is NOT supported here (hiring a candidate creates a new employee record and stays a reviewed dashboard action).
Leave7 tools
apply_leavewriteleave.requestApply for leave on your own behalf (the caller's user). Creates a leave request for the given leave type and date range; the request is auto-approved or sent for manager approval exactly as the leave type dictates. The actor is always the token's own user — you cannot apply on behalf of someone else.
cancel_leavewriteleave.requestCancel one of your OWN leave requests (the caller's user). Only a pending or approved request can be cancelled; the balance ledger is reversed automatically. You cannot cancel another person's request — the actor is always the token's own user.
get_leave_settingsreadleave.viewGet the tenant's leave configuration: leave-year start month, comp-off expiry window, probation length, and comp-off auto-earn flag.
get_my_leave_balancereadleave.viewGet the current leave balance per leave type for a given employee.
list_holidaysreadleave.viewList the tenant's public holiday calendar. Optionally filter by year.
list_leave_requestsreadleave.viewList leave requests. Optionally filter by employee, status, and date range.
list_leave_typesreadleave.viewList the tenant's leave-type catalogue (CL/SL/PL/LOP and any custom types) with their default balance, paid flag, and approval requirement.
Loan2 tools
get_loan_emi_schedulereadloan.viewGet the EMI installment schedule for a loan: per-installment due period, principal/interest split, amount, outstanding-after, and paid status. Read-only (no disburse/write-off).
list_loansreadloan.viewList employee loans and advances, newest first. Optionally filter by employee or status.
Maternity3 tools
file_maternity_casewritematernity.writeFile a maternity benefit case (notice) for YOURSELF (the caller's user). Opens a case in 'notice_filed' status with the expected delivery date. The case subject is always the token's own user — you cannot file on behalf of another employee over this interface. This is sensitive personal data; only the minimum field is collected.
get_maternity_casereadmaternity.viewGet a single maternity case (status, key dates, discharge-protection flag). Excludes free-text medical/eligibility notes.
list_maternity_casesreadmaternity.viewList the tenant's maternity benefit cases (employee, status, expected delivery, leave window, discharge-protection flag). Optionally filter by employee or status. Excludes free-text medical/eligibility notes.
Offboarding2 tools
get_offboarding_cyclereadoffboarding.viewGet one exit/offboarding cycle's status (read-only). Does NOT include the full & final money settlement or the exit-interview payload.
list_offboarding_cyclesreadoffboarding.viewList exit/offboarding cycles in the tenant (read-only — does NOT advance or close cycles). Closed cycles are hidden unless include_closed is true. Does NOT include the full & final money settlement.
Payroll8 tools
get_filing_runreadpayroll.viewGet one statutory filing run's header by ID (kind, period, revision, generated-at). The rendered file bytes are not returned.
get_payroll_runreadpayroll.viewGet the latest LOCKED payroll run, optionally filtered by period (YYYY-MM). Only locked runs are returned (pre-lock drafts are excluded).
get_payroll_run_detailreadpayroll.viewGet one payroll run's header detail by ID (period, lock state, employee count, gross/net totals). Per-employee PII is not included.
get_tds_challanreadpayroll.viewGet one TDS deposit challan by ID (BSR code, challan serial, deposit date, TDS/interest/fee amounts, section).
list_filing_runsreadpayroll.viewList statutory filing runs (Form-16 Part B / 24Q FVU / PF ECR / ESIC monthly). Optionally filter by kind and year.
list_my_payslipsreadpayroll.viewList an employee's payslips from LOCKED payroll runs (period + net pay). Only locked runs are included.
list_payroll_runsreadpayroll.viewList payroll runs (both draft and locked), newest first. Optionally filter by year.
list_tds_challansreadpayroll.viewList TDS deposit challans for a given financial year and quarter (BSR code, challan serial, deposit date, amounts). No deductee PAN is exposed.
People10 tools
get_assetreademployee.viewGet one asset-register row.
get_change_requestreadchangerequest.viewGet one employee data change request's status. Does NOT return the new-value payload or supporting-document keys (these may contain bank/address PII).
get_employeereademployee.viewGet a single employee's basic profile. Does NOT include bank account, PAN, or other PII financial fields.
get_hr_documentreademployee.viewGet one HR document's metadata (file name, type, visibility, signed/expiry). NEVER returns the document contents or storage key — the file cannot be downloaded over MCP.
get_onboardingreademployee.viewGet one employee onboarding instance with its task checklist and percent-complete.
list_assetsreademployee.viewList the asset register. Optionally filter by status (available, assigned, retired, lost) or assigned employee.
list_change_requestsreadchangerequest.viewList employee data change requests. Optionally filter by employee and status. Does NOT return the new-value payload or any supporting-document keys.
list_employeesreademployee.viewList employees in the tenant. Optionally filter by department or role. Returns basic (non-PII) profile fields.
list_hr_documentsreademployee.viewList an employee's HR documents (metadata only — file name, type, visibility, signed/expiry). NEVER returns the document contents or storage key.
list_onboardingreademployee.viewList employee onboarding instances in the tenant. Optionally filter by status (not_started, in_progress, completed, cancelled).
Performance12 tools
close_goalwriteperformance.goalMark a performance goal you own as completed. Only an 'active' goal can be completed (a draft must be activated first; a completed/cancelled goal is terminal). You can only close your own goals.
create_goalwriteperformance.goalCreate a performance goal / OKR owned by you (the caller's user). The goal starts in 'draft' status. You cannot create a goal on behalf of someone else — the owner is always the token's own user.
get_goalreadperformance.viewGet a single performance goal's detail.
get_reviewreadperformance.viewGet a single review's summary (overall rating + summary text) by review ID. Respects subject-scoped visibility: the performance.view capability is HR-tier, which always sees submitted reviews.
get_review_cyclereadperformance.viewGet a single review cycle's detail.
give_feedbackwriteperformance.feedbackGive continuous feedback about a colleague (the caller is the author). Specify the subject employee, the feedback body, and an optional visibility (private | subject | managers; default 'subject'). The subject must be a user in your tenant.
list_1on1sreadperformance.viewList 1:1 meetings in the tenant. Optionally filter by status (scheduled, completed, cancelled). PRIVATE manager notes are never included.
list_feedbackreadperformance.viewList continuous-feedback entries in the tenant. Optionally filter to feedback ABOUT a specific subject employee.
list_goalsreadperformance.viewList performance goals / OKRs in the tenant. Optionally filter by status (draft, active, completed, cancelled).
list_review_cyclesreadperformance.viewList performance review cycles in the tenant. Optionally filter by status (draft, open, in_progress, calibration, closed).
list_reviewsreadperformance.viewList reviews for a review cycle. Returns each roster assignment with its review status and overall rating (when submitted). Does NOT include private review bodies — use get_review for a single review's summary.
update_goalwriteperformance.goalUpdate a performance goal you own (title, description, period, dates). Editable only while the goal is in 'draft' or 'active' status. Only fields you supply are changed. You can only update your own goals.
Referral1 tool
list_referralsreadreferral.viewList the tenant's employee referrals by coarse pipeline + bonus status only. Does NOT return the referred candidate's name, email, phone or resume.
Skills4 tools
add_employee_skillwriteskills.writeAdd a skill to your own profile (the caller's user) at a given proficiency. If the skill is already on your profile this updates it (idempotent upsert). The actor is the token's own user — you cannot edit another employee's skills.
list_employee_skillsreadskills.viewList the skills recorded for one employee (proficiency and years of experience).
list_skillsreadskills.viewList the tenant's active skill catalog (skill tags HR has defined).
update_employee_skillwriteskills.writeUpdate an existing skill on your own profile (the caller's user) — proficiency, years of experience, last-used date or notes. Creates the row if absent (idempotent upsert). The actor is the token's own user — you cannot edit another employee's skills.
Survey3 tools
get_surveyreadsurvey.viewGet a single survey's metadata (title, description, type, status, window). Does NOT return individual responses.
list_surveysreadsurvey.viewList the tenant's surveys (title, type, status, open/close window). Optionally filter by status.
submit_survey_responsewritesurvey.writeSubmit your own response to an active survey (the caller's user). Provide an `answers` array, one object per question you answer: {question_id, and exactly one of answer_int (for nps/scale questions), answer_text (free_text), or answer_choices (single/multi choice)}. All required questions must be answered. One response per user; the answers are redacted from the audit log.
Time12 tools
get_attendance_dayreadtimetracking.viewGet a single employee's derived attendance record for one date.
get_shiftreadtimetracking.viewGet a single shift definition by ID.
get_timesheet_summaryreadtimetracking.viewGet one employee's per-day logged-minutes summary over a date range (days with zero minutes are omitted).
get_wfh_balancereadtimetracking.viewGet one employee's WFH usage summary: approved and pending request counts plus total approved WFH days. WFH is balance-free (no entitlement is debited).
list_attendancereadtimetracking.viewList derived attendance-day records (status, worked/late/overtime minutes, LOP fraction). Optionally filter by employee and date range.
list_comp_off_balancesreadtimetracking.viewList per-employee comp-off balances: the total still-drawable days across each employee's available, non-expired comp-off credits.
list_shiftsreadtimetracking.viewList the tenant's shift definitions (start/end time in minutes-from-midnight, night-shift flag, grace and overtime thresholds).
list_timesheetsreadtimetracking.viewList timesheet weeks (Monday-anchored) with their status and total/billable minutes. Optionally filter by employee and status.
list_wfh_requestsreadtimetracking.viewList work-from-home requests with their date range, day count, and status. Optionally filter by employee and status.
record_punchwritetimetracking.writeRecord an attendance punch (clock in or out) for yourself (the caller's user). punch_type is 'in' or 'out'. punched_at defaults to now if omitted. Optional latitude/longitude are used for geofence resolution server-side. The actor is always the token's own user — you cannot punch for someone else.
request_shift_swapwritetimetracking.writeRequest a shift swap with another employee. You offer YOUR shift on requester_date in exchange for the counterparty's shift on counterparty_date; the counterparty must accept before a manager approves. The requester is always the token's own user — you cannot open a swap on someone else's behalf.
submit_timesheetwritetimetracking.writeSubmit YOUR timesheet for a given week (the caller's user). week_start must be the Monday of the week. The week must be in draft and contain at least one entry. The actor is always the token's own user.
Travel3 tools
create_travel_preapprovalwritetravel.writeFile a travel pre-approval (pre-trip budget request) on your own behalf (the caller's user); it is created in 'pending' status for a manager/HR to decide on the dashboard. The requester is the token's own user.
get_travel_preapprovalreadtravel.viewGet a single travel pre-approval (purpose, destination, dates, estimated and approved budget, status).
list_travel_preapprovalsreadtravel.viewList the tenant's travel pre-approval requests (title, destination, dates, budget, status). Optionally filter by status.
Wfh1 tool
request_wfhwritewfh.writeRequest work-from-home for a date range, for yourself (the caller's user). The request is created pending manager approval; weekends and holidays in the range are excluded from the working-day count. The actor is always the token's own user.
Connect these tools to your AI assistant
Create an API token in Settings → API Tokens, add the WorkRight MCP server to your client with WR_MCP_API_TOKEN, and the tools your token's capabilities allow appear automatically. See the quickstart for the exact config.