Skip to main content
Glama

Invio Xero MCP

create_xero_leave_application

create_xero_leave_application

Proposes a DRAFT leave application for one employee/period, for Australian, New Zealand or United Kingdom organisations - it does NOT touch Xero itself, and never will on its own. This queues a pending change that a human must explicitly approve (your Xero MCP connector - the exact link is this response's own approvalUrl field) before Xero is touched at all; you have no way to approve it yourself. employeeId must come from list_xero_payroll_employees (never invented), and must currently be ACTIVE - this refuses plainly for a terminated employee. leaveTypeId must come from list_xero_payroll_leave_types (never invented) - call that tool first if you do not already have a real id for the leave type the user named. description is required (max 50 characters) and is shown to the human approver; title is an OPTIONAL, Australia-only short title, silently ignored for New Zealand/United Kingdom. Do NOT compute or pass an hours/units figure - none exists on this tool, because Xero itself works out the number of units automatically from the employee's own payroll calendar; guessing at one here would only be wrong. Once approved, the leave application is IMMEDIATELY USABLE in Xero (the same status an ordinary, already-actioned leave application carries on every region this connector serves) - unlike create_xero_timesheet/create_xero_pay_run, there is no further Xero-side draft state left for a human to review afterwards, so approving this change in Invio is the only approval this leave application ever needs.

Input Schema

NameRequiredDescriptionDefault
titleNoA short title for the leave (e.g. "Annual Leave") - AUSTRALIA ONLY. New Zealand and the United Kingdom have no separate title field at all on this operation - this is silently ignored for those two regions if given.
endDateYesEnd of the leave, YYYY-MM-DD. If the user wrote a bare numeric date with no month name ("9/8", "08/09"), do NOT settle it on your own judgement - it is 9 August to most of the world and 8 September in the US, and nothing downstream of this field can tell which you meant once it is a date. Follow the DATES instruction in this tool's description.
startDateYesStart of the leave, YYYY-MM-DD. If the user wrote a bare numeric date with no month name ("9/8", "08/09"), do NOT settle it on your own judgement - it is 9 August to most of the world and 8 September in the US, and nothing downstream of this field can tell which you meant once it is a date. Follow the DATES instruction in this tool's description.
employeeIdYesGet this from list_xero_payroll_employees first - never invent one.
descriptionYesA short description of the leave (e.g. "Annual leave - family holiday"), up to 50 characters. Required by Xero itself for New Zealand and the United Kingdom, and required here for Australia too, even though Xero itself does not require it there - so every leave application a human reviews names what it is for.
leaveTypeIdYesGet this from list_xero_payroll_leave_types first - never invent one.
organisationNoThe Xero organisation to use, by its display name. Only needed if this connection reaches more than one organisation - omit it when there is only one.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / employeeId / pattern
      Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"
    • addedInput schema / properties / leaveTypeId / pattern
      Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"
  2. First observed

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the non-read-only, non-destructive, non-idempotent, open-world profile, and the description goes well beyond them: it queues a pending change that never touches Xero on its own, cannot self-approve, surfaces an approvalUrl, refuses for terminated employees, and leaves no residual Xero-side draft after approval. The only gap is that it doesn't state failure/refusal shape beyond 'refuses plainly' or what a partial/duplicate submission does for a non-idempotent mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core behaviour is front-loaded in the first clause and most of the length is load-bearing operational detail rather than filler. It is still a single dense semicolon-chained block where the prerequisite and units instructions could be separated for scanability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully names the approvalUrl return field and explains the end-to-end approval lifecycle, which is what an agent most needs. It is undercut slightly by the dangling DATES reference the schema points to, which the description never supplies, so date-format ambiguity is left unresolved despite being flagged.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning on top: employeeId must be an ACTIVE employee id, description is shown to the human approver (max 50), title is AU-only and silently ignored elsewhere, and no units field exists because Xero derives units. However, the startDate/endDate schema entries instruct the agent to 'Follow the DATES instruction in this tool's description' and no such DATES guidance exists in the description, leaving ambiguous numeric dates unaddressed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Proposes a DRAFT leave application for one employee/period') plus the exact regional scope (AU/NZ/UK). It also explicitly contrasts itself with create_xero_timesheet and create_xero_pay_run, so an agent can place it among siblings without opening another schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit prerequisites (employeeId from list_xero_payroll_employees, leaveTypeId from list_xero_payroll_leave_types), a negative constraint ('never invented', must be ACTIVE), and an explicit anti-instruction ('Do NOT compute or pass an hours/units figure'). It also names the human-approval step that must follow, leaving little to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources