Skip to main content
Glama
ppiotis

Xero Practice Aggregator MCP

by ppiotis

Export a client's month-end pack (.xlsx)

month_end_pack
Idempotent

Generates a client-specific Excel month-end pack with aged receivables, bank reconciliation, and P&L snapshot, saving to XERO_AGG_EXPORT_DIR and returning the path and totals.

Instructions

Writes an Excel workbook for ONE client with three sheets: Aged Receivables (per invoice, bucketed current/1-30/31-60/61-90/90+ with totals), Bank Reconciliation (closing balance, unreconciled count and amount per account) and P&L Snapshot (latest month and period total). Saved in XERO_AGG_EXPORT_DIR; returns the path and the totals written so you can quote them.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
orgYesClient org: tenant id or (part of) the organisation name, e.g. 'Northwind'.
as_ofNoReport date (YYYY-MM-DD). Defaults to today (demo mode: 2026-09-30).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare write-not-read (readOnlyHint=false), openWorld, idempotent and non-destructive. The description adds real context beyond that: what is written (three specific sheets with their aggregates), where it is written (XERO_AGG_EXPORT_DIR), and what the caller receives back (path plus totals). It does not spell out overwrite/re-run semantics or permissions, which keeps it off a 5.

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?

A single dense sentence, front-loaded with the verb and scope, followed by the sheet breakdown and the return payload. Every clause carries information, though the sheet enumeration is long enough that it could be trimmed in favour of the arc.

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?

With no output schema, the description correctly carries the return contract (file path and totals to quote) and names the destination directory and the exact sheets produced. An agent has everything needed to call it and interpret the result.

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

Parameters3/5

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

Schema description coverage is 100%, so both params are already documented in the schema, and the description adds little syntax detail. Its only contribution is confirming the single-org scope ('ONE client'), implying org must identify exactly one tenant — baseline 3 for full schema coverage.

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 (writes an Excel workbook) and a precisely scoped resource (ONE client, three named sheets with their contents). No sibling tool produces a file export, so the agent can immediately tell this apart from sync/log/report siblings.

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

Usage Guidelines4/5

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

Clearly frames the operating context: one client per call, output lands in XERO_AGG_EXPORT_DIR, and the totals come back in the response. It stops short of naming when an agent should prefer this over e.g. overdue_invoices or client_health for the same data, so no explicit alternatives or exclusions are given.

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