xero-mcp
Use the Xero MCP server — obtain/refresh OAuth2 bearer tokens, troubleshoot authentication, and pick up other operational notes for working with Xero MCP tools. Use when Xero MCP tools fail with authentication errors, when the bearer token has expired (tokens last ~30 min), before starting any Xero workflow, or for general guidance on Xero MCP usage.
Best use case
xero-mcp is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Use the Xero MCP server — obtain/refresh OAuth2 bearer tokens, troubleshoot authentication, and pick up other operational notes for working with Xero MCP tools. Use when Xero MCP tools fail with authentication errors, when the bearer token has expired (tokens last ~30 min), before starting any Xero workflow, or for general guidance on Xero MCP usage.
Teams using xero-mcp should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/xero-mcp/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How xero-mcp Compares
| Feature / Agent | xero-mcp | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Use the Xero MCP server — obtain/refresh OAuth2 bearer tokens, troubleshoot authentication, and pick up other operational notes for working with Xero MCP tools. Use when Xero MCP tools fail with authentication errors, when the bearer token has expired (tokens last ~30 min), before starting any Xero workflow, or for general guidance on Xero MCP usage.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Xero MCP Covers usage of the Xero MCP server, including authentication (OAuth2 bearer tokens) and related operational notes. For browser-driven automation of the Xero web UI (not via MCP), see the separate [`xero-browser`](../xero-browser/SKILL.md) skill instead. ## Authentication The Xero MCP server needs a valid bearer token (`XERO_CLIENT_BEARER_TOKEN`) in its environment. Tokens last ~30 minutes and must be refreshed via the `xero-oauth` helper script. **Trigger to read [`references/authentication.md`](references/authentication.md):** - Xero MCP tools return authentication/authorization errors - Starting a Xero workflow and unsure if the token is current - Token has expired (~30 minute lifetime) - First-time setup, or after revoking and re-authorizing the Xero app That reference covers the `xero-oauth` script, prerequisites (`.env` credentials, Xero app registration), the refresh-vs-full-flow choice, and which config files get updated. ## Searching for records The MCP list-* tools paginate at 10 records per page. Absence on page 1 is **not** absence in Xero. Before concluding a record is missing, search by ID directly or page exhaustively. See [`references/searching-records.md`](references/searching-records.md) for the rules around `list-manual-journals`, `list-invoices`, `list-bank-transactions`, and `list-contacts`. ## Manual journals (create / update / void) The schema descriptions for `create-manual-journal` and `update-manual-journal` are misleading on at least two points: - `lineAmountTypes: "NO_TAX"` is rejected by the Xero API (use the default — omit the field — which serialises as `NoTax`). - `update-manual-journal` says "Only works on draft manual journals", but in practice mutates POSTED MJs (narration, date, lines, status). This makes the **void-and-replace** pattern (create new POSTED MJ referencing the old UUID, then update the old to `status: VOIDED`) viable via MCP without touching the web UI. The response strings from the write tools also render input params verbatim and show line items as `[object Object]` — so always confirm state with `list-manual-journals manualJournalId=<uuid>` after every write before trusting it. See [`references/manual-journals.md`](references/manual-journals.md) for the full void-and-replace recipe, common error messages, and the token-expiry coupling that bites multi-step MJ workflows.
Related Skills
xero-browser
General Xero browser automation notes. Use when automating any Xero page with agent-browser — covers non-standard UI patterns, waiting, and dropdown menus.
xlsx-to-csv
Convert XLSX spreadsheets (single or multi-sheet) to CSV files you can read and grep. Use whenever you need to process an .xlsx report from Xero, Cryptio, bank exports, or any tool that delivers spreadsheet output.
test-running
Run tests according to repository guidelines. Use after linting passes, before staging changes.
task-orchestration
Orchestrate the complete development workflow for implementing sub-tasks from a task list. Use for end-to-end feature implementation with quality controls.
task-implementation
Implement a single sub-task from a task list. Use when working on feature development with existing task lists.
task-generation
Generate a detailed task list from a PRP. Use after a PRP is created and ready for implementation planning.
subagent-authoring
Create subagent definitions for Claude Code and OpenCode that delegate to skills. Use when creating new subagents or refactoring existing ones to follow the delegation pattern.
slow-command-running
Pipe long running commands through tee(1) to allow watching output and repeated analyses without rerunning
skill-authoring
Create and maintain Claude Code skills following Anthropic best practices. Use when building new skills, refactoring existing ones, or ensuring skills follow official guidelines for structure, naming, progressive disclosure, and testing.
safe-rm
Safely delete files / directories without asking for permission
prp-generation
Generate a Product Requirements Prompt (PRP) from a feature description. Use when starting work on a new feature.
project-initialization
Initialize a project with AI agent rules and documentation. Use when setting up a new repository for AI agent collaboration.