跳到正文
cccskills
免费在 GitHub 公开

xero-mcp

Use the Xero MCP server — troubleshoot its self-refreshing OAuth2 token file, maintain the local best-of-breed server build, and pick up other operational notes for working with Xero MCP tools. Use when Xero MCP tools fail with authentication errors, before starting any Xero workflow, when adding or updating upstream xero-mcp-server PRs, or for general guidance on Xero MCP usage.

中文简介正在准备中。当前显示原文说明。

查看安装方法

包含的文件(7)

  • SKILL.md4.7 KB
  • references/authentication.md6.4 KB
  • references/local-server.md5.3 KB
  • references/manual-journals.md3.8 KB
  • references/mcp-vs-browser.md3.8 KB
  • references/searching-records.md4.2 KB
  • scripts/xero-oauth11.3 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

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 skill instead.

MCP vs browser — which to use (READ FIRST)

Before any Xero data task, read references/mcp-vs-browser.md. It is the single source of truth for choosing MCP tools vs the browser Account Transactions report (shared with the xero-browser skill — do not duplicate its content here). Key rule: Xero MCP has no per-account transaction endpoint, so a single account's full ledger comes from the browser report, never from paginating list-manual-journals.

Authentication

The server reads a self-refreshing OAuth2 token file on every tool call, so tokens never need refreshing by hand and the agent session never needs restarting for auth. Several agents (Claude Code, Pi, OpenCode) share the file safely: refreshes are serialised by a lock, so each expiry is refreshed exactly once. They also share Xero's rate limits — "Too many requests to Xero" is not an auth failure; avoid fanning out many parallel Xero calls and retry after a moment.

On an auth error: diagnose — do NOT limp to workarounds

An "Authentication failed" / 401 from a Xero MCP tool is not a routine expiry any more. Do not retry blindly, and do not switch to a browser / block-explorer / Cryptio workaround "to keep moving": the MCP path is far faster and more reliable. Instead, read references/authentication.md — the usual causes are a scope the token lacks (one tool fails, others work) or a refresh token unused for 60 days (every tool fails), which needs the user to run the browser OAuth flow.

The ONLY time a browser fallback is right is when the data genuinely isn't available via MCP at all (e.g. a per-account transaction ledger — see references/mcp-vs-browser.md).

Also read references/authentication.md for first-time setup, after revoking and re-authorizing the Xero app, or when changing scopes, or to understand or check how several agents share the token. It covers the xero-oauth script, .env configuration, the multi-agent refresh protocol, Xero app registration, the refresh-vs-full-flow choice, and the scopes newer tools need.

The server is a local best-of-breed build

Upstream @xeroapi/xero-mcp-server is effectively unmaintained, so the configs run a local build that merges ~28 reviewed upstream PRs plus local fixes (xero-node v20, token-file locking). Tools and behaviour therefore differ from upstream's README. For which PRs are in, how to rebuild after changes, and how to add a new upstream PR, see references/local-server.md.

Searching for records

The MCP list-* tools paginate at 10 records per page by default; most accept pageSize (up to 100). 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 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 for the full void-and-replace recipe, common error messages, and the token-expiry coupling that bites multi-step MJ workflows.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Applies local reliability, viewport, tab-safety, stale-ref, widget, and browser-boundary lessons to every agent-browser automation. Use alongside the upstream agent-browser skill whenever navigating, clicking, filling, testing, extracting, taking screenshots, or debugging any website with agent-browser.

中文简介正在准备中。当前显示原文说明。

aspiers/ai-config152026年10月9日 更新

Size the agent-browser Chromium window to fill its current screen, leaving a configurable bottom margin for the desktop panel. Use before any agent-browser automation that needs the full screen visible without elements overlapping or scrolling off (e.g. Xero, dense web apps).

中文简介正在准备中。当前显示原文说明。

aspiers/ai-config152026年10月9日 更新

Create Claude Code slash commands, OpenCode command files, Pi prompt templates, and Codex custom prompts that delegate to the right subagent or skill. Use when creating new commands, porting commands across agent platforms, or refactoring existing commands to follow platform conventions.

中文简介正在准备中。当前显示原文说明。

aspiers/ai-config152026年10月9日 更新

Adds or changes allowed commands in AI agent permission configs for OpenCode and Claude Code. Use when a command needs adding to an agent's allow list, when permission settings for existing commands need changing, when setting up a new AI tool that requires command permissions, or when the user asks to stop being prompted for a particular command.

中文简介正在准备中。当前显示原文说明。

aspiers/ai-config152026年10月9日 更新

bc

免费

Creates a Beads issue for a described problem or piece of work without doing the work itself. Use when the user invokes `/bc` or `$bc`, or asks to file, log, or record a bead for something. To also carry out the work, use the `bx` skill instead.

中文简介正在准备中。当前显示原文说明。

aspiers/ai-config152026年10月9日 更新

bdr

免费

Stores a persistent memory or learning with `bd remember` so it survives across sessions. Use when the user invokes `/bdr` or `$bdr`, or asks to remember, note, or persist an insight in a Beads workspace.

中文简介正在准备中。当前显示原文说明。

aspiers/ai-config152026年10月9日 更新

查看 aspiers 的全部技能

报告此技能的问题