Skip to main content
Glama

Invio Xero MCP

create_xero_pay_run

create_xero_pay_run

Proposes a DRAFT pay run for one payroll calendar, for Australian or New Zealand organisations - it does NOT touch Xero itself, and never will on its own. Refuses plainly for the United Kingdom: Xero's own Payroll API documents no way to create a pay run there at all (only reading existing ones and creating pay run CALENDARS) - a United Kingdom pay run is generated inside Xero itself, from the pay calendar, and a human needs to open Payroll in Xero directly to start one. 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. payrollCalendarId must come from list_xero_payroll_employees (any employee on that calendar) - never invented. Xero itself computes the period start/end and payment date from the calendar, so none of those are asked for here. The created pay run starts as a Xero-side DRAFT once approved - a human remains free to review it, check the totals, and only later use post_xero_pay_run (a SEPARATE, irreversible step, Australia only) to actually pay it - this tool never posts anything itself.

Input Schema

NameRequiredDescriptionDefault
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.
payrollCalendarIdYesGet this from any employee on that calendar via list_xero_payroll_employees.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / payrollCalendarId / 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.8/5.0
Behavior5/5

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

Annotations only say readOnlyHint=false and destructiveHint=false; the description supplies the far more consequential context: the call queues a pending change requiring human approval via the approvalUrl field, the agent cannot self-approve, and the resulting Xero object starts as a DRAFT. It also discloses a hard regional limitation the annotations cannot express. No contradiction with the annotation set.

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?

Front-loaded with the core fact (drafts a proposal, does not touch Xero) and every sentence carries real information - regional refusal, approval gate, ID provenance, draft state, next step. Some redundancy ('does NOT touch Xero itself, and never will on its own') and a single dense paragraph cost it the top mark.

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

Completeness5/5

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

For a two-parameter mutation tool with no output schema, the description covers everything an agent needs: what is created, what state it lands in, who must approve, where the approval link lives, the regional restriction, and the follow-up tool. Nothing material is left to inference.

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; the description earns above that by explaining the negative space - Xero computes period start/end and payment date from the calendar, so those parameters are deliberately absent - and by reinforcing the provenance rule for payrollCalendarId. It adds meaning rather than restating the schema.

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 pay run for one payroll calendar') with scope (AU/NZ orgs) and immediately distinguishes it from the write-side sibling by noting it does not touch Xero itself. Read alongside list_xero_pay_runs and post_xero_pay_run in the sibling list, an agent can pick correctly without opening a 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?

Explicit when-not-to-use ('Refuses plainly for the United Kingdom' with the reason), explicit prerequisite (payrollCalendarId must come from list_xero_payroll_employees, never invented), and explicit hand-off to post_xero_pay_run as a separate irreversible step. Alternatives and exclusions are both named, not inferred.

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