Xero MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| AUTH_MODE | No | Auth mode: env or gateway. In gateway mode, credentials are passed per-request via headers. | env |
| MCP_HTTP_HOST | No | HTTP server bind address | 0.0.0.0 |
| MCP_HTTP_PORT | No | HTTP server port | 8080 |
| MCP_TRANSPORT | No | Transport type: stdio or http | stdio |
| XERO_TENANT_ID | No | Xero tenant ID (organisation). Required when AUTH_MODE is 'env'. | |
| XERO_ACCESS_TOKEN | No | Xero OAuth2 access token. Required when AUTH_MODE is 'env'. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| xero_navigateA | Discover available Xero tools by domain. Returns tool names and descriptions for the selected domain. All tools are callable at any time — this is a help/discovery aid, not a prerequisite. |
| xero_statusA | Show credentials status and available domains |
| xero_backA | Return to domain selection (no-op in flattened mode). All tools are always available. |
| xero_contacts_listA | List contacts in Xero with pagination. Optionally filter using a where clause. Returns contact details including name, email, and addresses. |
| xero_contacts_getA | Get detailed information about a specific contact by its ID. Returns full contact profile including addresses, phone numbers, and email. |
| xero_contacts_createB | Create a new contact in Xero. Name is required; other fields are optional. |
| xero_contacts_searchA | Search contacts by name. Returns contacts whose name contains the search term. |
| xero_invoices_listA | List invoices in Xero with pagination. Optionally filter by status and type (ACCREC for sales, ACCPAY for bills). |
| xero_invoices_getA | Get detailed information about a specific invoice by its ID. Returns full invoice details including line items, amounts, and payment status. |
| xero_invoices_createB | Create a new invoice in Xero. Requires type, contact, and at least one line item. |
| xero_invoices_update_statusA | Update the status of an existing invoice. Can submit, authorise, or void an invoice. |
| xero_payments_listA | List payments in Xero with pagination. Optionally filter by status. |
| xero_payments_getA | Get detailed information about a specific payment by its ID. |
| xero_payments_createB | Create a new payment in Xero. Records a payment against an invoice. |
| xero_accounts_listB | List chart of accounts in Xero. Optionally filter by account type or class. |
| xero_accounts_getA | Get detailed information about a specific account by its ID. |
| xero_reports_profit_and_lossA | Get a Profit and Loss (income statement) report for a date range. |
| xero_reports_balance_sheetB | Get a Balance Sheet report as of a specific date. |
| xero_reports_aged_receivablesA | Get an Aged Receivables report showing outstanding customer invoices by age. |
| xero_reports_aged_payablesA | Get an Aged Payables report showing outstanding supplier bills by age. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Xero Invoice Card | Interactive MCP Apps card rendering a Xero invoice |
TDQS
Scored across 20 tools
Most tools are clearly distinct by resource and action. The main ambiguity is between xero_contacts_list and xero_contacts_search, and the three navigation/utility tools (xero_navigate, xero_status, xero_back) add some conceptual overlap, though their roles are explained.
Tool names follow a very consistent xero_<domain>_<action> pattern throughout, with predictable verbs like list, get, create, and update_status. Even the report tools use clear domain-action naming with full report names.
At 20 tools, the server is in the heavier range, especially because xero_navigate, xero_status, and xero_back are meta/navigation aids that do not add domain functionality in a flattened mode. The 17 domain tools are mostly justified, but the overall surface feels a bit bloated.
Core accounting workflows are covered—contacts, invoices, payments, accounts, and key reports—but the surface has notable lifecycle gaps. Contacts and invoices lack update/delete operations, accounts are read-only, and payments have no update or reversal capability.