Employment Hero Payroll MCP by usefulapi

io.usefulapiPublished by usefulapi.ioOfficial publisherv1.20.4Updated Nov 7, 2026

Read Employment Hero Payroll pay runs, payslips, timesheets and leave; approve or decline leave.

The publisher's own server: Ably MCP by usefulapi

VerifiedStreamable HTTPWeb executableProductivity & WorkflowFinanceBusiness & Commerce

Overview

AI-generated overview

Hosted MCP server that lets an assistant read Employment Hero Payroll (KeyPay) businesses, employees, pay runs, payslips, timesheets and leave, and approve or…

What you can do
  • Look up the account user and list or read businesses, employees and their leave balances
  • List and read pay runs, pay run summaries, per-employee totals, payslips and pay run warnings
  • List and read timesheets and leave requests, plus leave categories, pay schedules, locations, pay categories and work types
  • Run gross-to-net and leave-balance reports for a date range or a finalised pay run
  • Approve or decline pending leave requests
  • Check usage, request a missing feature, and manage or cancel the paid subscription
When to use it
Useful when you want to ask questions about payroll in plain language, such as latest pay run totals, pending leave approvals or an employee's leave balance, or when you want leave requests approved or declined from the assistant. It suits both occasional checks and recurring payroll reporting.
Requirements
A remote MCP endpoint; no local install. Sign-in is by OAuth, and the login page asks for Employment Hero Payroll credentials, with a region choice (AU, NZ, SG, MY or UK). Add only the server URL to the client config; no API key or Authorization header. A free plan allows 50 tool calls per month; paid plans are available.
Before you install
Payroll data is sensitive: names, pay and other personal details are visible to the assistant, and masking of tax, identity and bank fields is best-effort, so unlabelled identifiers may remain. Approving or declining leave writes data, notifies the employee and cannot be undone through this server. The server is a third-party host, and the free tier is metered; paid plans are billed through a checkout link and cancellation has no refund for the current period.

Installation

In SourceWeft

  1. Open Employment Hero Payroll MCP by usefulapi in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.usefulapi%2Fkeypay/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "employment-hero-payroll-by-usefulapi": {
      "type": "http",
      "url": "https://keypay.usefulapi.io/mcp"
    }
  }
}

README

Employment Hero Payroll MCP by usefulapi

Use Employment Hero Payroll (formerly KeyPay) from Claude, Cursor, or any MCP client — read your businesses, employees, pay runs, payslips and pay run totals, timesheets, leave requests and balances, pay schedules, locations, pay categories and work types, run gross-to-net and leave-balance reports, and approve or decline leave requests. Known tax, identity and bank-account fields are removed from replies, and labelled identifiers in free text are masked on a best-effort basis; unlabelled identifiers may remain, and names, pay and other personal details are visible to your AI assistant. Hosted, no local install: connect with your Employment Hero Payroll API key and pick your region (AU, NZ, SG, MY or UK).

Live endpoint: https://keypay.usefulapi.io/mcp · Homepage: https://usefulapi.io/keypay

Connect

  • Claude (claude.ai, Desktop): open Customize → Connectors, click + Add → Add custom connector, and paste https://keypay.usefulapi.io/mcp.
  • Claude Code: claude mcp add --transport http keypay https://keypay.usefulapi.io/mcp, then run /mcp to log in.
  • VS Code: Add to VS Code.
  • Cursor and other clients: add the URL as a remote MCP server:
json
{  "mcpServers": {    "keypay": {      "url": "https://keypay.usefulapi.io/mcp"    }  }}

Add only the URL. Do not add an Authorization header or an API key to the client config: the server signs you in with OAuth, and the login page asks for your Employment Hero Payroll credentials.

Step-by-step setup, where to find your credentials, and FAQ: https://usefulapi.io/keypay/

Tools

ToolTypeWhat it does
keypay_get_userreadGet current user
keypay_list_businessesreadList businesses
keypay_get_businessreadGet business
keypay_list_employeesreadList employees
keypay_get_employeereadGet employee
keypay_get_leave_balancesreadGet employee leave balances
keypay_list_pay_runsreadList pay runs
keypay_get_pay_runreadGet pay run
keypay_list_pay_run_summariesreadList pay run summaries
keypay_get_pay_run_summaryreadGet pay run summary
keypay_get_pay_run_totalsreadGet pay run totals per employee
keypay_get_pay_run_payslipsreadGet pay slip data of a pay run
keypay_list_pay_run_warningsreadList pay run warnings
keypay_list_timesheetsreadList timesheets
keypay_get_timesheetreadGet timesheet line
keypay_list_leave_requestsreadList leave requests
keypay_get_leave_requestreadGet leave request
keypay_list_leave_categoriesreadList leave categories
keypay_list_pay_schedulesreadList pay schedules
keypay_list_locationsreadList locations
keypay_list_pay_categoriesreadList pay categories
keypay_list_work_typesreadList work types
keypay_report_gross_to_netreadGross to net report
keypay_report_leave_balancesreadLeave balances report
keypay_approve_leave_requestwriteApprove leave request
keypay_decline_leave_requestwriteDecline leave request
keypay_usage_statusmetaUsage status (free-tier meter)
keypay_request_featuremetaRequest a missing feature
keypay_upgrademetaUpgrade to Pro or Pro+
keypay_cancel_subscriptionmetaCancel the Pro subscription

read tools are read-only; write tools mutate data (clients should confirm them); meta tools report usage, manage your subscription or send a feature request.

Pricing

PlanPriceLimit
Free$050 tool calls / month
Pro (per user)$9/mo or $90/yr (2 months free)Unlimited*

*Pro has a fair use limit of 10,000 tool calls a month on this server. For more, write to [email protected].

Pro covers this server only. Subscribe with keypay_upgrade (it returns a Stripe Checkout link). Cancel any time with keypay_cancel_subscription: Pro continues to the end of the paid period, with no refund for the current period, and running keypay_upgrade before then undoes the cancel. Or write to [email protected].

License

MIT © usefulapi. Not affiliated with or endorsed by Employment Hero.

Source: servers/keypay/README.md at commit 4046075

Tools

26

keypay_get_user

Get current user

The Employment Hero Payroll user this API key belongs to: id, email, display name and time zone. GET /user.

Takes no parameters.

keypay_list_businesses

List businesses

List the payroll businesses this user can access: id, name, region, legal name, contact details, pay cycle, number of employees. Start here: most other tools need a business id. GET /business (OData).

Parameterstopskipfilterorderby

keypay_get_business

Get business

One business by id: name, legal name, contact, address, ABN/company details, leave year, standard hours, pay cycle. GET /business/{businessId}.

Parametersbusiness_idrequired

keypay_list_employees

List employees

List the business's employees with basic details: id, name, preferred name, gender, date of birth, contact details, address, start and end date, external id. Tax file, bank and super details are not part of this list. Filter with OData, e.g. "Surname eq 'Smith'". GET /business/{businessId}/employee/details (OData).

Parameterstopskipfilterorderbybusiness_idrequired

keypay_get_employee

Get employee

One employee's full record: name, contact, employment type, status, start/end date, pay schedule, primary location and pay category, rate and rate unit, hours per week, award, leave template, work types, tags. Tax file / national insurance / IRD / NRIC numbers, bank accounts and super member numbers are removed. GET /business/{businessId}/employee/unstructured/{employeeId}.

Parametersbusiness_idrequiredemployee_idrequired

keypay_get_leave_balances

Get employee leave balances

An employee's leave balances per leave category (accrued amount and unit), optionally as at a date. GET /business/{businessId}/employee/{employeeId}/leavebalances.

Parametersas_at_datebusiness_idrequiredemployee_idrequired

keypay_list_pay_runs

List pay runs

List the business's pay runs: id, pay schedule, pay period start/end, date paid, finalised flag, payslips published, notation. Newest first with orderby "PayPeriodEnding desc". GET /business/{businessId}/payrun (OData).

Parameterstopskipfilterorderbybusiness_idrequired

keypay_get_pay_run

Get pay run

One pay run by id: pay schedule, period, date paid, whether it is finalised, notation. GET /business/{businessId}/payrun/{payRunId}.

Parameterspay_run_idrequiredbusiness_idrequired

keypay_list_pay_run_summaries

List pay run summaries

Pay runs with their totals: total hours, gross wages and net wages, plus the usual pay run fields. GET /business/{businessId}/payrun/summary (OData).

Parameterstopskipfilterorderbybusiness_idrequired

keypay_get_pay_run_summary

Get pay run summary

One pay run with its total hours, gross wages and net wages. GET /business/{businessId}/payrun/{payRunId}/summary.

Parameterspay_run_idrequiredbusiness_idrequired

keypay_get_pay_run_totals

Get pay run totals per employee

Per-employee totals of a pay run (gross, net, tax withheld, super and the like; the fields depend on the region). Bank payment details are removed. GET /business/{businessId}/payrun/{payRunId}/totals.

Parameterspay_run_idrequiredbusiness_idrequired

keypay_get_pay_run_payslips

Get pay slip data of a pay run

Pay slip data for every employee in a pay run, keyed by employee: earnings lines, deductions, tax, super, leave taken and accrued, gross/net and year-to-date totals. Large for big pay runs. Bank account numbers and tax/identity numbers are removed. GET /business/{businessId}/payrun/{payRunId}/payslips.

Parameterspay_run_idrequiredbusiness_idrequiredshow_all_data

keypay_list_pay_run_warnings

List pay run warnings

Warnings on a pay run (for example an employee paid below their award rate or with a negative net pay): type, employee and message. GET /business/{businessId}/payrun/{payRunId}/warnings.

Parameterspay_run_idrequiredbusiness_idrequired

keypay_list_timesheets

List timesheets

List the business's timesheet lines: employee, start/end time, units, work type, location, status, comments, breaks. Filter by employee or date with OData, e.g. "EmployeeId eq 123 and StartTime gt datetime'2026-04-01T00:00:00'". GET /business/{businessId}/timesheet (OData: $filter, $orderby, $top, $skip).

Parameterstopskipfilterorderbybusiness_idrequired

keypay_get_timesheet

Get timesheet line

One timesheet line by id. GET /business/{businessId}/timesheet/{timesheetLineId}.

Parametersbusiness_idrequiredtimesheet_idrequired

keypay_list_leave_requests

List leave requests

List the business's leave requests: employee, leave category, from/to date, total hours, status (Approved, Pending, Rejected, Cancelled), notes. Filter by status, dates, category, location or employee. GET /business/{businessId}/leaverequest.

Parametersstatusto_datefrom_datebusiness_idrequiredemployee_idlocation_idleave_category_id

keypay_get_leave_request

Get leave request

One leave request: employee, category, dates, hours, status, notes. GET /business/{businessId}/employee/{employeeId}/leaverequest/{leaveRequestId}.

Parametersbusiness_idrequiredemployee_idrequiredleave_request_idrequired

keypay_list_leave_categories

List leave categories

Leave categories of the business (annual, personal/sick, long service...): id, name, unit type, accrual rule. GET /business/{businessId}/leavecategory (OData).

Parameterstopskipfilterorderbybusiness_idrequired

keypay_list_pay_schedules

List pay schedules

Pay schedules of the business: id, name, frequency, last date paid, last pay run. Bank and tax account details are removed. GET /business/{businessId}/payschedule (OData).

Parameterstopskipfilterorderbybusiness_idrequired

keypay_list_locations

List locations

Locations of the business (sites, departments): id, name, parent, fully qualified name, state. GET /business/{businessId}/location (OData).

Parameterstopskipfilterorderbybusiness_idrequired

keypay_list_pay_categories

List pay categories

Pay categories (earnings types) of the business: id, name, rate unit, loadings, super rate, whether leave accrues. GET /business/{businessId}/paycategory (OData).

Parameterstopskipfilterorderbybusiness_idrequired

keypay_list_work_types

List work types

Work types of the business: id, name, pay category, leave category, short code. GET /business/{businessId}/worktype (OData).

Parameterstopskipfilterorderbybusiness_idrequired

keypay_report_gross_to_net

Gross to net report

Gross-to-net report per employee: earnings by pay category, tax, deductions, super, net pay. Choose a date range (from_date + to_date) or one finalised pay run (pay_run_id). The report has no paging: at most 200 rows are returned (narrow with employee_id or location_id). GET /business/{businessId}/report/grosstonet.

Parametersto_datefrom_datepay_run_idbusiness_idrequiredemployee_idlocation_idpay_schedule_id

keypay_report_leave_balances

Leave balances report

Leave balances of all employees as at a date, per leave category. The report has no paging: at most 200 rows are returned (narrow with location_id or leave_category_id). For one employee use keypay_get_leave_balances. GET /business/{businessId}/report/leavebalances.

Parametersas_at_datebusiness_idrequiredlocation_idleave_category_id

keypay_approve_leave_request

Approve leave request

WRITE: approves a pending leave request (the employee is notified and the leave is applied to their pay). Check the request first with keypay_get_leave_request. Cannot be undone through this server. POST /business/{businessId}/employee/{employeeId}/leaverequest/{leaveRequestId}/approve.

Parametersbusiness_idrequiredemployee_idrequiredleave_request_idrequired

keypay_decline_leave_request

Decline leave request

WRITE: declines a leave request, with an optional reason the employee sees. Check the request first with keypay_get_leave_request. POST /business/{businessId}/employee/{employeeId}/leaverequest/{leaveRequestId}/decline.

Parametersreasonbusiness_idrequiredemployee_idrequiredleave_request_idrequired

Version history

18
  1. v1.20.4LatestNov 7, 2026
  2. v1.19.3Nov 5, 2026
  3. v1.19.2Nov 5, 2026
  4. v1.19.1Nov 4, 2026
  5. v1.19.0Nov 3, 2026
  6. v1.18.1Nov 3, 2026
  7. v1.17.0Nov 1, 2026
  8. v1.15.0Oct 31, 2026
  9. v1.14.0Oct 31, 2026
  10. v1.13.2Oct 30, 2026
  11. v1.13.0Oct 30, 2026
  12. v1.8.1Oct 26, 2026
  13. v1.5.3Oct 25, 2026
  14. v1.5.0Oct 25, 2026
  15. v1.4.0Oct 24, 2026
  16. v1.1.0Oct 23, 2026
  17. v1.0.1Oct 22, 2026
  18. v1.0.0Oct 21, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Usefulapi integrations