CAT
/MCP
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Cross AI Tools

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by @mertduzgun

Independent project, not affiliated with Anthropic

Xero

wyre-technology/xero-mcp
140 toolsauthSTDIOregistry active
Summary

Connects Claude to the Xero Accounting API for managing customers, suppliers, invoices, payments, and pulling financial reports. You get domain-organized tools for contacts, invoices, payments, accounts, and reports including P&L, balance sheet, and aged receivables. Supports both stdio for local Claude Desktop use and HTTP mode for multi-tenant deployments. Ships with gateway mode that accepts per-request credentials via headers, useful if you're building a proxy that handles OAuth tokens for multiple Xero organizations. Requires a Xero developer account and OAuth2 credentials. Reach for this when you need Claude to read or write accounting data directly instead of exporting CSV files.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

Tools

Public tool metadata for what this MCP can expose to an agent.

40 tools
XERO_CREATE_BANK_TRANSACTIONCreate a bank transaction in Xero. Use SPEND for payments out or RECEIVE for money received.9 params

Create a bank transaction in Xero. Use SPEND for payments out or RECEIVE for money received.

Parameters* required
Datestring
Transaction date in YYYY-MM-DD format.
Typestring
Transaction type: SPEND (payment out) or RECEIVE (money in).
Statusstring
Transaction status: AUTHORISED or DELETED.
ContactIDstring
Xero Contact ID for the transaction.
LineItemsarray
List of line items for the bank transaction.
Referencestring
Reference or transaction description.
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
CurrencyCodestring
Currency code (e.g., USD, EUR).
BankAccountCodestring
Bank account code (from chart of accounts).
XERO_CREATE_CONTACTCreate a new contact in Xero. Contacts can be customers, suppliers, or both.14 params

Create a new contact in Xero. Contacts can be customers, suppliers, or both.

Parameters* required
Namestring
Full name of the contact or organization.
Websitestring
Website URL of the contact.
LastNamestring
Last name of the contact person.
FirstNamestring
First name of the contact person.
TaxNumberstring
Tax number (VAT/ABN/GST number).
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
IsCustomerboolean
Mark as customer when true.
IsSupplierboolean
Mark as supplier when true.
EmailAddressstring
Email address of the contact.
phone_numberstring
Primary phone number (will be added as DEFAULT phone type).
AccountNumberstring
Account reference number for the contact.
mobile_numberstring
Mobile phone number (will be added as MOBILE phone type).
DefaultCurrencystring
Default currency code (e.g., USD, EUR).
BankAccountDetailsstring
Bank account details for the contact.
XERO_CREATE_INVOICECreate a new invoice in Xero. Supports both sales invoices (ACCREC) and bills (ACCPAY).10 params

Create a new invoice in Xero. Supports both sales invoices (ACCREC) and bills (ACCPAY).

Parameters* required
Datestring
Invoice date in YYYY-MM-DD format.
Typestring
Invoice type: ACCREC (accounts receivable/sales) or ACCPAY (accounts payable/bills).
Statusstring
Invoice status: DRAFT, SUBMITTED, or AUTHORISED.
DueDatestring
Due date in YYYY-MM-DD format.
ContactIDstring
Xero Contact ID for the invoice.
LineItemsarray
List of line items for the invoice.
Referencestring
Reference or purchase order number.
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
CurrencyCodestring
Currency code (e.g., USD, EUR).
InvoiceNumberstring
Invoice number (auto-generated if not provided).
XERO_CREATE_ITEMCreate an inventory item in Xero. Items can be tracked for sales and/or purchases.9 params

Create an inventory item in Xero. Items can be tracked for sales and/or purchases.

Parameters* required
Codestring
Unique item code (SKU).
Namestring
Item name/description.
IsSoldboolean
Item can be sold when true.
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
IsPurchasedboolean
Item can be purchased when true.
SalesDetails.UnitPricenumber
Unit price for sales.
SalesDetails.AccountCodestring
Account code for sales.
PurchaseDetails.UnitPricenumber
Unit price for purchases.
PurchaseDetails.AccountCodestring
Account code for purchases.
XERO_CREATE_PAYMENTCreate a payment in Xero to link an invoice with a bank account transaction.7 params

Create a payment in Xero to link an invoice with a bank account transaction.

Parameters* required
Datestring
Payment date in YYYY-MM-DD format.
Amountnumber
Payment amount.
AccountIDstring
Xero Account ID (bank account) for the payment.
InvoiceIDstring
Xero Invoice ID that this payment is for.
Referencestring
Payment reference or description.
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
CurrencyRatenumber
Exchange rate for foreign currency payments.
XERO_CREATE_PURCHASE_ORDERCreate a purchase order in Xero to order goods/services from suppliers.7 params

Create a purchase order in Xero to order goods/services from suppliers.

Parameters* required
Datestring
Purchase order date in YYYY-MM-DD format.
Statusstring
Purchase order status: DRAFT, SUBMITTED, AUTHORISED, BILLED.
ContactIDstring
Xero Contact ID for the purchase order.
LineItemsarray
List of line items for the purchase order.
Referencestring
Reference or purchase order number.
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
DeliveryDatestring
Expected delivery date in YYYY-MM-DD format.
XERO_GET_ACCOUNTRetrieve a specific account from the chart of accounts by ID. Returns account code, name, type, and settings.2 params

Retrieve a specific account from the chart of accounts by ID. Returns account code, name, type, and settings.

Parameters* required
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
account_idstring
Xero Account ID to retrieve.
XERO_GET_ASSETRetrieve a specific asset by ID from Xero. Returns depreciation details and book value.2 params

Retrieve a specific asset by ID from Xero. Returns depreciation details and book value.

Parameters* required
asset_idstring
Xero Asset ID to retrieve.
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
XERO_GET_BALANCE_SHEET_REPORTRetrieve Balance Sheet report from Xero. Shows assets, liabilities, and equity at a specific date.7 params

Retrieve Balance Sheet report from Xero. Shows assets, liabilities, and equity at a specific date.

Parameters* required
datestring
Balance sheet as of this date in YYYY-MM-DD format.
periodsinteger
Number of periods to compare.
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
timeframestring
Timeframe period: MONTH, QUARTER, or YEAR.
paymentsOnlyboolean
Show only cash transactions when true (cash basis).
standardLayoutboolean
Use standard layout when true.
trackingOptionIDstring
Filter by tracking option ID.
XERO_GET_BUDGETRetrieve a budget from Xero. Budgets track planned vs actual spending by account.4 params

Retrieve a budget from Xero. Budgets track planned vs actual spending by account.

Parameters* required
DateTostring
End date for budget data in YYYY-MM-DD format.
DateFromstring
Start date for budget data in YYYY-MM-DD format.
budget_idstring
Xero Budget ID to retrieve.
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
XERO_GET_CONNECTIONSTool to list active Xero connections. Use when you need to retrieve all current tenant connections for the authenticated user.

Tool to list active Xero connections. Use when you need to retrieve all current tenant connections for the authenticated user.

No parameter schema in public metadata yet.

XERO_GET_CONTACTRetrieve a specific contact by ID from Xero. Returns full contact details including addresses and phone numbers.2 params

Retrieve a specific contact by ID from Xero. Returns full contact details including addresses and phone numbers.

Parameters* required
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
contact_idstring
Xero Contact ID to retrieve.
XERO_GET_CONTACTSTool to retrieve a list of contacts. Use when you need up-to-date contact information with filtering, paging, or incremental updates.10 params

Tool to retrieve a list of contacts. Use when you need up-to-date contact information with filtering, paging, or incremental updates.

Parameters* required
IDsarray
Comma-separated list of ContactIDs to filter by.
pageinteger
Page number for paginated results (requires pageSize).
orderstring
Sort by field, e.g. UpdatedDateUTC DESC.
wherestring
OData-style filter on optimised fields, e.g. Name="ABC".
pageSizeinteger
Number of contacts per page (requires page).
ContactIDstring
Xero ContactID. If provided, fetches a single contact at /Contacts/{ContactID}.
searchTermstring
Case-insensitive search across Name, FirstName, LastName, ContactNumber, CompanyNumber, EmailAddress.
summaryOnlyboolean
Return a lightweight summary-only response when true.
includeArchivedboolean
Include archived contacts when true.
If-Modified-Sincestring
UTC timestamp (YYYY-MM-DDThh:mm:ss) to set as the If-Modified-Since header; returns only contacts created or modified since this timestamp.
XERO_GET_INVOICERetrieve a specific invoice by ID from Xero. Returns full invoice details including line items and status.3 params

Retrieve a specific invoice by ID from Xero. Returns full invoice details including line items and status.

Parameters* required
unitdpinteger
Number of decimal places for unit amounts (default 4).
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
invoice_idstring
Xero Invoice ID to retrieve.
XERO_GET_ITEMRetrieve a specific item by ID from Xero. Returns item code, name, pricing, and tax details.2 params

Retrieve a specific item by ID from Xero. Returns item code, name, pricing, and tax details.

Parameters* required
item_idstring
Xero Item ID to retrieve.
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
XERO_GET_MANUAL_JOURNALRetrieve a specific manual journal by ID from Xero. Returns full details including journal lines.2 params

Retrieve a specific manual journal by ID from Xero. Returns full details including journal lines.

Parameters* required
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
manual_journal_idstring
Xero Manual Journal ID to retrieve.
XERO_GET_ORGANISATIONRetrieve organisation details from Xero. Returns company info, base currency, timezone, financial year settings, etc.1 params

Retrieve organisation details from Xero. Returns company info, base currency, timezone, financial year settings, etc.

Parameters* required
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
XERO_GET_PROFIT_LOSS_REPORTRetrieve Profit & Loss report from Xero. Shows income, expenses, and net profit for a specified period.11 params

Retrieve Profit & Loss report from Xero. Shows income, expenses, and net profit for a specified period.

Parameters* required
toDatestring
End date for the report in YYYY-MM-DD format.
periodsinteger
Number of periods to compare (e.g., for month-on-month comparison).
fromDatestring
Start date for the report in YYYY-MM-DD format.
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
timeframestring
Timeframe period: MONTH, QUARTER, or YEAR.
paymentsOnlyboolean
Show only cash transactions when true (cash basis).
standardLayoutboolean
Use standard layout when true.
trackingOptionIDstring
Filter by tracking option ID.
trackingOptionID2string
Filter by second tracking option ID.
trackingCategoryIDstring
Filter by tracking category ID.
trackingCategoryID2string
Filter by second tracking category ID.
XERO_GET_PROJECTRetrieve a specific project by ID from Xero. Returns project details, deadlines, and status.2 params

Retrieve a specific project by ID from Xero. Returns project details, deadlines, and status.

Parameters* required
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
project_idstring
Xero Project ID to retrieve.
XERO_GET_PURCHASE_ORDERRetrieve a specific purchase order by ID from Xero. Returns full details including line items and status.2 params

Retrieve a specific purchase order by ID from Xero. Returns full details including line items and status.

Parameters* required
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
purchase_order_idstring
Xero Purchase Order ID to retrieve.
XERO_GET_QUOTESTool to retrieve a list of quotes. Use when you need to list, filter, or page through sales quotes. Use after obtaining the tenant ID via connections.11 params

Tool to retrieve a list of quotes. Use when you need to list, filter, or page through sales quotes. Use after obtaining the tenant ID via connections.

Parameters* required
pageinteger
Page number for paginated results (1-based).
orderstring
Order by any element, e.g., ExpiryDate ASC.
DateTostring
Filter for quotes on or before this date (YYYY-MM-DD).
Statusstring
Filter for quotes of a particular status.
DateFromstring
Filter for quotes on or after this date (YYYY-MM-DD).
ContactIDstring
Filter for quotes belonging to a particular contact by ContactID.
tenant_idstring
Xero Tenant ID. Optional - will auto-fetch from connections if not provided.
QuoteNumberstring
Filter by quote number.
ExpiryDateTostring
Filter for quotes expiring on or before this date (YYYY-MM-DD).
ExpiryDateFromstring
Filter for quotes expiring on or after this date (YYYY-MM-DD).
If-Modified-Sincestring
Only return quotes modified after this UTC timestamp in RFC3339 format.
XERO_LIST_ACCOUNTSRetrieve chart of accounts from Xero. Returns all accounting codes used for categorizing transactions.3 params

Retrieve chart of accounts from Xero. Returns all accounting codes used for categorizing transactions.

Parameters* required
orderstring
Sort by field, e.g. Code ASC or Name DESC.
wherestring
OData-style filter, e.g. Status=="ACTIVE" AND Type=="EXPENSE"
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
XERO_LIST_ASSETSRetrieve fixed assets from Xero. Assets track depreciation and book value of capital equipment.6 params

Retrieve fixed assets from Xero. Assets track depreciation and book value of capital equipment.

Parameters* required
pageinteger
Page number for paginated results.
statusstring
Filter by asset status: DRAFT, REGISTERED, DISPOSED.
orderBystring
Sort field: AssetName, AssetNumber, PurchaseDate.
pageSizeinteger
Number of assets per page.
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
sortDirectionstring
Sort direction: ASC or DESC.
XERO_LIST_ATTACHMENTSList all attachments for a specific entity in Xero (invoice, contact, etc.).3 params

List all attachments for a specific entity in Xero (invoice, contact, etc.).

Parameters* required
entity_idstring
ID of the entity to list attachments for.
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
entity_typestring
Entity type: Invoices, Contacts, BankTransactions, CreditNotes, PurchaseOrders, etc.
XERO_LIST_BANK_TRANSACTIONSRetrieve bank transactions from Xero. Includes spend (payments) and receive (receipts) transactions.6 params

Retrieve bank transactions from Xero. Includes spend (payments) and receive (receipts) transactions.

Parameters* required
pageinteger
Page number for paginated results.
orderstring
Sort by field, e.g. Date DESC or UpdatedDateUTC ASC.
wherestring
OData-style filter, e.g. Status=="AUTHORISED" AND Type=="SPEND"
unitdpinteger
Decimal places for unit amounts (default 4).
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
If-Modified-Sincestring
UTC timestamp to return only bank transactions modified since this date.
XERO_LIST_CREDIT_NOTESRetrieve list of credit notes from Xero. Credit notes are issued to reduce amounts owed by customers.5 params

Retrieve list of credit notes from Xero. Credit notes are issued to reduce amounts owed by customers.

Parameters* required
pageinteger
Page number for paginated results.
orderstring
Sort by field, e.g. Date DESC or CreditNoteNumber ASC.
wherestring
OData-style filter, e.g. Status=="AUTHORISED"
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
If-Modified-Sincestring
UTC timestamp to return only credit notes modified since this date.
XERO_LIST_FILESRetrieve files from Xero Files. Lists documents stored in Xero's file management system.5 params

Retrieve files from Xero Files. Lists documents stored in Xero's file management system.

Parameters* required
pageinteger
Page number for paginated results.
sortstring
Sort field: Name, Size, CreatedDateUTC.
folderIdstring
Filter files by folder ID.
pagesizeinteger
Number of files per page (max 100).
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
XERO_LIST_FOLDERSRetrieve folders from Xero Files. Lists document folders in Xero's file management system.2 params

Retrieve folders from Xero Files. Lists document folders in Xero's file management system.

Parameters* required
sortstring
Sort field: Name, CreatedDateUTC.
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
XERO_LIST_INVOICESRetrieve a list of invoices from Xero. Supports filtering by status, contact, date range, and pagination.10 params

Retrieve a list of invoices from Xero. Supports filtering by status, contact, date range, and pagination.

Parameters* required
pageinteger
Page number for paginated results.
orderstring
Sort by field, e.g. Date DESC or InvoiceNumber ASC.
wherestring
OData-style filter, e.g. Status=="AUTHORISED" AND Total>100
Statusesstring
Comma-separated list of invoice statuses to filter by (e.g., DRAFT, SUBMITTED, AUTHORISED, PAID).
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
ContactIDsstring
Comma-separated list of Contact IDs to filter invoices by contact.
InvoiceIDsstring
Comma-separated list of Invoice IDs to filter by.
createdByMyAppboolean
Filter to invoices created by your app when true.
includeArchivedboolean
Include archived invoices when true.
If-Modified-Sincestring
UTC timestamp to return only invoices modified since this date.
XERO_LIST_ITEMSRetrieve items (inventory/products) from Xero. Items can be tracked for sales and/or purchases.4 params

Retrieve items (inventory/products) from Xero. Items can be tracked for sales and/or purchases.

Parameters* required
orderstring
Sort by field, e.g. Code ASC or Name DESC.
wherestring
OData-style filter, e.g. IsSold==true AND IsPurchased==true
unitdpinteger
Number of decimal places for unit amounts (default 4).
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
XERO_LIST_JOURNALSRetrieve journals from Xero. Journals show the accounting entries for all transactions.4 params

Retrieve journals from Xero. Journals show the accounting entries for all transactions.

Parameters* required
offsetinteger
Offset for pagination.
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
paymentsOnlyboolean
Filter to payment journals only when true.
If-Modified-Sincestring
UTC timestamp to return only journals modified since this date.
XERO_LIST_MANUAL_JOURNALSRetrieve manual journals from Xero. Manual journals are used for period-end adjustments and corrections.5 params

Retrieve manual journals from Xero. Manual journals are used for period-end adjustments and corrections.

Parameters* required
pageinteger
Page number for paginated results.
orderstring
Sort by field, e.g. Date DESC.
wherestring
OData-style filter, e.g. Status=="POSTED"
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
If-Modified-Sincestring
UTC timestamp to return only manual journals modified since this date.
XERO_LIST_PAYMENTSRetrieve list of payments from Xero. Payments link invoices to bank transactions.5 params

Retrieve list of payments from Xero. Payments link invoices to bank transactions.

Parameters* required
pageinteger
Page number for paginated results.
orderstring
Sort by field, e.g. Date DESC or Amount ASC.
wherestring
OData-style filter, e.g. Status=="AUTHORISED"
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
If-Modified-Sincestring
UTC timestamp to return only payments modified since this date.
XERO_LIST_PROJECTSRetrieve projects from Xero. Projects track time and costs for client work.6 params

Retrieve projects from Xero. Projects track time and costs for client work.

Parameters* required
pageinteger
Page number for paginated results.
statesstring
Comma-separated project states: INPROGRESS, CLOSED.
pageSizeinteger
Number of projects per page.
contactIDstring
Filter projects by contact ID.
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
projectIdsstring
Comma-separated list of project IDs to filter by.
XERO_LIST_PURCHASE_ORDERSRetrieve list of purchase orders from Xero. Purchase orders track goods/services ordered from suppliers.7 params

Retrieve list of purchase orders from Xero. Purchase orders track goods/services ordered from suppliers.

Parameters* required
pageinteger
Page number for paginated results.
orderstring
Sort by field, e.g. Date DESC or PurchaseOrderNumber ASC.
DateTostring
Filter by date to (YYYY-MM-DD).
Statusstring
Filter by status: DRAFT, SUBMITTED, AUTHORISED, BILLED, DELETED.
DateFromstring
Filter by date from (YYYY-MM-DD).
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
If-Modified-Sincestring
UTC timestamp to return only purchase orders modified since this date.
XERO_LIST_TAX_RATESRetrieve tax rates from Xero. Shows available tax codes and rates for the organization.4 params

Retrieve tax rates from Xero. Shows available tax codes and rates for the organization.

Parameters* required
orderstring
Sort by field, e.g. Name ASC.
wherestring
OData-style filter, e.g. Status=="ACTIVE"
TaxTypestring
Filter by specific tax type.
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
XERO_LIST_TRACKING_CATEGORIESRetrieve tracking categories from Xero. Tracking categories are used to segment data for reporting (e.g., departments, regions).4 params

Retrieve tracking categories from Xero. Tracking categories are used to segment data for reporting (e.g., departments, regions).

Parameters* required
orderstring
Sort by field, e.g. Name ASC.
wherestring
OData-style filter, e.g. Status=="ACTIVE"
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
includeArchivedboolean
Include archived tracking categories when true.
XERO_POST_INVOICE_UPDATETool to update an existing invoice. Use when you need to modify the details of an invoice after it's been created.4 params

Tool to update an existing invoice. Use when you need to modify the details of an invoice after it's been created.

Parameters* required
unitdpinteger
Number of decimal places for unit amounts.
Invoicesarray
List containing invoice update definitions (one item).
InvoiceIDstring
Unique identifier (UUID) of the invoice.
InvoiceNumberstring
Invoice number identifier.
XERO_UPDATE_CONTACTUpdate an existing contact in Xero. Only provided fields will be updated.12 params

Update an existing contact in Xero. Only provided fields will be updated.

Parameters* required
Namestring
Full name of the contact or organization.
LastNamestring
Last name of the contact person.
FirstNamestring
First name of the contact person.
TaxNumberstring
Tax number (VAT/ABN/GST number).
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
contact_idstring
Xero Contact ID to update.
EmailAddressstring
Email address of the contact.
phone_numberstring
Primary phone number (will update DEFAULT phone type).
AccountNumberstring
Account reference number for the contact.
mobile_numberstring
Mobile phone number (will update MOBILE phone type).
DefaultCurrencystring
Default currency code (e.g., USD, EUR).
BankAccountDetailsstring
Bank account details for the contact.
XERO_UPLOAD_ATTACHMENTUpload a file attachment to a Xero entity (invoice, contact, etc.). Supports PDF, images, and documents.6 params

Upload a file attachment to a Xero entity (invoice, contact, etc.). Supports PDF, images, and documents.

Parameters* required
filenamestring
Filename for the attachment.
entity_idstring
ID of the entity to attach the file to.
tenant_idstring
Xero tenant/organization ID. If not provided, uses the first connected tenant.
entity_typestring
Entity type to attach to: Invoices, Contacts, BankTransactions, CreditNotes, etc.
file_to_uploadstring
File to upload as attachment.
include_onlineboolean
Include online invoice in attachment.

Xero MCP Server

Model Context Protocol (MCP) server for the Xero Accounting API. Enables Claude and other MCP-compatible clients to manage Xero contacts, invoices, payments, accounts, and reports.

One-Click Deployment

Deploy to DO

Deploy to Cloudflare Workers

Note on registry auth: This server depends only on public npm packages, so the Cloudflare and DigitalOcean cloud builders install its dependencies anonymously — no token is required for one-click deploy. (If a future release adds a private @wyre-technology/* dependency, you would supply a GitHub PAT with read:packages as a build variable — NODE_AUTH_TOKEN for Cloudflare Workers, a build-time GITHUB_TOKEN secret for DigitalOcean.)

Installing the published package: The released package is published to the GitHub Packages npm registry, which requires authentication on every install (even for public packages). To install it, authenticate npm to npm.pkg.github.com with a GitHub PAT that has read:packages:

export NODE_AUTH_TOKEN=$(gh auth token)
npm install @wyre-technology/xero-mcp

Quick Start

Prerequisites

  • Node.js >= 20
  • Xero OAuth2 app credentials (requires a Xero developer account)

Install and Build

npm install
npm run build

Run (stdio mode)

XERO_ACCESS_TOKEN=your-access-token XERO_TENANT_ID=your-tenant-id npm start

Run (HTTP mode)

MCP_TRANSPORT=http XERO_ACCESS_TOKEN=your-access-token XERO_TENANT_ID=your-tenant-id npm start

The server listens on http://0.0.0.0:8080/mcp by default.

Docker

docker build -t xero-mcp .
docker run -p 8080:8080 \
  -e MCP_TRANSPORT=http \
  -e XERO_ACCESS_TOKEN=your-access-token \
  -e XERO_TENANT_ID=your-tenant-id \
  xero-mcp

Environment Variables

VariableRequiredDefaultDescription
XERO_ACCESS_TOKENYes (env mode)—Xero OAuth2 access token
XERO_TENANT_IDYes (env mode)—Xero tenant ID (organisation)
MCP_TRANSPORTNostdioTransport type: stdio or http
MCP_HTTP_PORTNo8080HTTP server port
MCP_HTTP_HOSTNo0.0.0.0HTTP server bind address
AUTH_MODENoenvAuth mode: env or gateway

Gateway Mode

When AUTH_MODE=gateway, credentials are passed per-request via HTTP headers instead of environment variables:

  • X-Xero-Access-Token — OAuth2 access token
  • X-Xero-Tenant-Id — Xero tenant ID

This allows a gateway/proxy to manage multi-tenant credentials.

Available Tools

Tools are organized into domains. Use xero_navigate to select a domain, then use the domain-specific tools.

Navigation

  • xero_navigate — Select a domain (contacts, invoices, payments, accounts, reports)
  • xero_back — Return to domain selection

Contacts

  • xero_contacts_list — List contacts with pagination and optional filtering
  • xero_contacts_get — Get detailed contact information by ID
  • xero_contacts_create — Create a new contact (customer or supplier)
  • xero_contacts_search — Search contacts by name

Invoices

  • xero_invoices_list — List invoices with optional status and type filters
  • xero_invoices_get — Get detailed invoice information by ID
  • xero_invoices_create — Create a new invoice (sales or bill)
  • xero_invoices_update_status — Update invoice status (submit, authorise, void)

Payments

  • xero_payments_list — List payments with optional status filter
  • xero_payments_get — Get detailed payment information by ID
  • xero_payments_create — Record a payment against an invoice

Accounts

  • xero_accounts_list — List chart of accounts with optional type/class filter
  • xero_accounts_get — Get detailed account information by ID

Reports

  • xero_reports_profit_and_loss — Profit and Loss (income statement) for a date range
  • xero_reports_balance_sheet — Balance Sheet as of a specific date
  • xero_reports_aged_receivables — Aged Receivables by contact
  • xero_reports_aged_payables — Aged Payables by contact

License

Apache-2.0

Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

Configuration

XERO_TENANT_ID*

Xero tenant ID (organisation). Required when AUTH_MODE is 'env'.

XERO_ACCESS_TOKEN*secret

Xero OAuth2 access token. Required when AUTH_MODE is 'env'.

MCP_TRANSPORTdefault: stdio

Transport mode for the server. Set to 'stdio' for local CLI use; the image defaults to 'http' for gateway hosting.

AUTH_MODEdefault: env

Credential source: 'env' reads vars locally, 'gateway' expects header injection from the WYRE MCP Gateway.

LOG_LEVELdefault: info

Log verbosity: debug, info, warn, error

Categories
Finance & Commerce
Registryactive
Packageghcr.io/wyre-technology/xero-mcp:v1.4.0
TransportSTDIO
AuthRequired
UpdatedJun 2, 2026
View on GitHub

Related Finance & Commerce MCP Servers

View all →
Shopify Subscription Reconciliation MCP (Recharge Edition)

io.github.shelvick/shopify-subscription-reconciliation

Reconcile Shopify orders against Recharge subscription charges and Stripe payouts.
Google Ads

zleventer/google-ads-mcp

MCP server for Google Ads — 22 tools for spend diagnosis, impression share, and asset performance.
1
Meok Stripe Acp Checkout Mcp

csoai-org/meok-stripe-acp-checkout-mcp

MEOK Stripe ACP Checkout MCP — ChatGPT shopping bridge. Issues + verifies + signs Stripe Agentic
Google Ads

io.github.mharnett/google-ads

Google Ads MCP with MCC support: 35 tools for campaigns, keywords, reporting, GAQL.
Stripe Billing Mcp

csoai-org/stripe-billing-mcp

stripe-billing-mcp MCP server by MEOK AI Labs
Google Ads Mcp

co.pipeboard/google-ads-mcp

Google Ads automation with AI: analyze performance, manage campaigns, optimize bids.