Skip to main content
Glama
XeroAPI

Xero MCP Server

Official

approve-timesheet

Approve payroll timesheets in Xero using their unique ID to finalize employee time tracking and processing.

Instructions

Approve a payroll timesheet in Xero by its ID.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
timesheetIDYesThe ID of the timesheet to approve.

Implementation Reference

  • Defines and implements the 'approve-timesheet' MCP tool handler, including schema validation and response formatting. Delegates to core Xero handler.
    const ApprovePayrollTimesheetTool = CreateXeroTool( "approve-timesheet", `Approve a payroll timesheet in Xero by its ID.`, { timesheetID: z.string().describe("The ID of the timesheet to approve."), }, async (params: { timesheetID: string }) => { const { timesheetID } = params; const response = await approveXeroPayrollTimesheet(timesheetID); if (response.isError) { return { content: [ { type: "text" as const, text: `Error approving timesheet: ${response.error}`, }, ], }; } const timesheet = response.result; return { content: [ { type: "text" as const, text: `Successfully approved timesheet with ID: ${timesheet?.timesheetID}`, }, ], }; }, );
  • Core handler function that wraps the Xero API approval call, handles errors, and returns structured response.
    export async function approveXeroPayrollTimesheet(timesheetID: string): Promise< XeroClientResponse<Timesheet | null> > { try { const approvedTimesheet = await approveTimesheet(timesheetID); return { result: approvedTimesheet, isError: false, error: null, }; } catch (error) { return { result: null, isError: true, error: formatError(error), }; } }
  • Helper function that authenticates and directly calls the Xero Payroll NZ API to approve the timesheet.
    async function approveTimesheet(timesheetID: string): Promise<Timesheet | null> { await xeroClient.authenticate(); // Call the approveTimesheet endpoint from the PayrollNZApi const approvedTimesheet = await xeroClient.payrollNZApi.approveTimesheet( xeroClient.tenantId, timesheetID, ); return approvedTimesheet.body.timesheet ?? null; }
  • Input schema using Zod for validating the timesheetID parameter.
    { timesheetID: z.string().describe("The ID of the timesheet to approve."), },
  • Registers the approve-timesheet tool (ApprovePayrollTimesheetTool) within the UpdateTools array.
    export const UpdateTools = [ UpdateContactTool, UpdateCreditNoteTool, UpdateInvoiceTool, UpdateManualJournalTool, UpdateQuoteTool, UpdateItemTool, UpdateBankTransactionTool, ApprovePayrollTimesheetTool, AddTimesheetLineTool, UpdatePayrollTimesheetLineTool, RevertPayrollTimesheetTool, UpdateTrackingCategoryTool, UpdateTrackingOptionsTool ];

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/XeroAPI/xero-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server