ClawLink

How to connect Xero Accounting to Hermes Agent

Connect Xero Accounting to Hermes with ClawLink in one click — 52 tools your AI agent can call from chat via hosted OAuth. No API keys, no manual setup.

Get started for free
Hermes Agent
Hermes Agent
ClawLink
ClawLink
Xero Accounting
Xero Accounting
Xero AccountingOAUTH2MCP

Manage accounting, invoices, contacts, and expenses. Once connected, Hermes Agent can read and act on Xero Accounting from chat — pairing, token refresh, and tool wiring handled for you.

52 tools

Most guides for giving Hermes Agent Xero Accounting access start with registering your own OAuth app or pasting API keys into env files, then leave the token refresh and tool wiring to you. ClawLink gives Hermes a more practical Xero Accounting setup: pair once in the browser and your always-on Hermes agent can act on Xero Accounting for you, reading and doing real work on your behalf with no auth, token refresh, or tool wiring to build yourself.

Copy this prompt into Hermes to install the plugin and pair your account.

Prompt for Hermes
Set up ClawLink for Hermes and tell me when it's ready.

1. Install the plugin:
hermes plugins install ClawLink-HQ/hermes-plugin --enable

2. Start pairing. It prints an approval link, so show me the link and stop, don't wait:
hermes clawlink begin

3. I'll approve it in my browser, then reply "approved".

4. When I say approved, finish setup:
hermes clawlink finish

5. Then run `hermes clawlink test` and tell me whether ClawLink is ready.

Setup

It takes three steps to connect Hermes to Xero Accounting.

  1. 1

    Install and pair

    Install the ClawLink plugin, then pair Hermes with a one-time browser approval:

    hermes plugins install ClawLink-HQ/hermes-plugin --enable
  2. 2

    Connect Xero Accounting

    One-click OAuth in the dashboard.

  3. 3

    Use it from chat

    Ask Hermes Agent: "What can you do with Xero Accounting?"

Install by command

The prompt above walks Hermes through this. By hand, it is four commands and a browser approval:

hermes plugins install ClawLink-HQ/hermes-plugin --enable
hermes clawlink begin    # prints an approval link — open it and approve
hermes clawlink finish   # after approving in the browser
hermes clawlink test

Then connect Xero Accounting in the ClawLink dashboard — a one-click OAuth approval, no API keys.

Verify the connection by asking Hermes:

Run xero_list_invoices and filter to unpaid invoices, then list who owes what with due dates, oldest first.

Using a different agent?

The Hermes plugin is one client of ClawLink's MCP server. Claude Code, Cursor, Codex, or any agent that can run a shell command pairs with the same ClawLink account through the CLI:

npx -y @useclawlink/cli login

login opens the same browser approval and stores a credential locally. Once Xero Accounting is connected in the dashboard, that agent calls the same 52 Xero Accounting tools over MCP. Full setup for MCP clients and shell agents: connect apps to any AI agent.

Xero Accounting MCP for Hermes

Looking for a Xero Accounting MCP server for Hermes Agent? ClawLink connects Xero Accounting to Hermes Agent and exposes 52 Xero Accounting tools your agent can call over MCP, with hosted auth and nothing to run or maintain yourself. Using OpenClaw instead? The OpenClaw Xero Accounting integration works the same way.

Xero support here is the full accounting surface rather than a demo subset: 52 tools across invoices, quotes, credit notes, purchase orders, payments, bank transactions, contacts, manual journals, items, tax rates, tracking categories, budgets, fixed assets, files, projects, and read-only financial reports. The connection uses Xero's own OAuth consent with the granular scopes Xero now assigns to web apps, so Hermes acts only on the organisation you approve, and you can revoke access from either side.

What the Hermes Agent Xero Accounting integration can do

52 Xero Accounting tools are ready for Hermes Agent once the account is connected. The 30 below are the ones people reach for most; your agent can call all 52.

30 of 52 Xero Accounting tools for Hermes

ToolWhat it does
Create contact xero_create_contactCreate a contact, which can be a customer, a supplier, or both
Create invoice xero_create_invoiceCreate an invoice or a bill. Reusing an existing invoice number updates that invoice instead
Create manual journal xero_create_manual_journalCreate a manual journal. Defaults to an unposted draft with no tax; debits must equal credits
Create payment xero_create_paymentRecord a payment against an invoice and a bank account
Get balance sheet report xero_get_balance_sheet_reportBalance sheet at a date. Liability and credit balances are returned as negative numbers
Get bank transaction xero_get_bank_transactionRetrieve one spent or received money transaction by its bank transaction ID
Get contacts xero_get_contactsList contacts, covering both customers and suppliers, with filtering and paging
Get invoice xero_get_invoiceRetrieve a single invoice by its invoice ID
Get organisation xero_get_organisationShow which Xero organisation this connection is acting as
Get profit loss report xero_get_profit_loss_reportProfit and loss for a date range. Read rows by label, not position; 365 days per call
Get trial balance report xero_get_trial_balance_reportTrial balance for the organisation as of a given date
List accounts xero_list_accountsList the chart of accounts for the organisation
List bank transactions xero_list_bank_transactionsList bank transactions. Unfiltered results include deleted rows that skew any total
List invoices xero_list_invoicesList invoices. Returns both sales invoices and the bills you owe unless the type is filtered
List manual journals xero_list_manual_journalsList manual journals, the books-level adjustments the agent can also write
List payments xero_list_paymentsList payments recorded against invoices
List tax rates xero_list_tax_ratesList tax rates. Use the returned codes as tax values on other tools to avoid a rejection
Get account xero_get_accountRetrieve a specific account from Xero's chart of accounts by its unique ID
Get asset xero_get_assetRetrieve a specific asset by ID from Xero
Get budget xero_get_budgetRetrieve a budget from Xero
Get connections xero_get_connectionsList active Xero connections
Get credit note xero_get_credit_noteRetrieve a specific credit note by ID from Xero
Get item xero_get_itemRetrieve a specific item by ID from Xero
Get manual journal xero_get_manual_journalRetrieve a specific manual journal by ID from Xero
Get payment xero_get_paymentRetrieve a specific payment by ID from Xero
Get project xero_get_projectRetrieve a specific project by ID from Xero
Get purchase order xero_get_purchase_orderRetrieve a specific purchase order by ID from Xero
Get quotes xero_get_quotesRetrieve a list of quotes
List assets xero_list_assetsRetrieve fixed assets from Xero
List attachments xero_list_attachmentsList all attachments for a specific entity in Xero (invoice, contact, etc.)

Try it: find the Xero Accounting tool you need

Browse the 30 Xero Accounting tools

Click any tool to see exactly what Hermes can do and copy a ready-to-use prompt.

Example prompts

Run xero_list_invoices and filter to unpaid invoices, then list who owes what with due dates, oldest first.

Create a draft invoice with xero_create_invoice for the contact and line items I am about to paste. Show me the totals before anything is sent.

Pull xero_get_profit_loss_report for last month and xero_get_balance_sheet_report as of month end, then summarise the notable movements.

Create the contact I describe with xero_create_contact, then draft a quote for them with xero_create_quote and give me both ids.

How the Xero tools behave

The shapes that decide whether a Xero prompt returns clean numbers or surprises you.

  • Reports are read-only. xero_get_profit_loss_report, xero_get_balance_sheet_report, and xero_get_trial_balance_report can inform a decision but cannot change the books, so reporting is the safe surface to automate first.
  • Reusing an invoice number overwrites, it does not fail. If xero_create_invoice is given an InvoiceNumber that already exists, Xero updates that existing invoice instead of creating a new one. Let Xero assign the number unless you have a specific reason not to, and never have an agent generate sequential numbers on its own.
  • A broken filter looks exactly like an empty account. The where clause on the invoice and bank-transaction reads returns nothing at all when the expression is malformed or a field name is wrong, rather than reporting an error, so "you have no unpaid invoices" can mean the filter was wrong. Confirm with an unfiltered read before acting on an empty result.
  • Listing invoices returns your bills too. Results include both sales invoices (Type ACCREC) and the bills you owe (ACCPAY) unless the type is filtered, so an unqualified "total my invoices" mixes money in with money out.
  • Unfiltered bank transaction reads include deleted rows, which quietly skews any total the agent adds up. Dates in that response come back as /Date(milliseconds)/ rather than a readable date, and the endpoint allows roughly 60 requests a minute per organisation, so heavy pagination can hit a 429.
  • Balance sheet liabilities come back negative. Liability and credit balances are returned as negative numbers, and report rows should be read by their label ("Net Profit", "Total Current Assets") rather than by position, because the row order is not a stable interface. Profit and loss covers at most a 365-day range per call.
  • Manual journals default to unposted and untaxed. xero_create_manual_journal creates a DRAFT unless the status is set to POSTED, and treats line amounts as having no tax unless told otherwise. Debits and credits must balance or Xero rejects the whole journal.
  • The general ledger feed is not included. Xero limits its Journals endpoint to apps on its Advanced developer tier, so ledger review runs through the reports and xero_list_manual_journals instead. Manual journal writes are fully supported.
  • One organisation per connection. Every read and write happens inside the organisation approved at consent. xero_get_organisation shows which one a connection is acting as when anything looks wrong.
  • Writes are real writes. Invoice, payment, contact, and manual journal creation post to your Xero organisation. A prompt that ends with "show me before you send" keeps a human in the loop without extra tooling.

The alternative to ClawLink is usually manual OAuth app setup plus your own token handling, permission troubleshooting, and tool plumbing for Hermes Agent. That is fine if you want to build and maintain the integration yourself. Most teams just want Xero Accounting working from chat.

ManualClawLink
Connection flowRegister a Xero Accounting app, configure redirect URLs, manage consent details, and reconnect users when auth settings drift.Users connect Xero Accounting through the hosted browser flow and ClawLink keeps the token lifecycle out of your app code.
Ongoing maintenanceYou own refresh logic, permission debugging, environment config, and every provider-specific edge case for Xero Accounting.ClawLink handles the repetitive integration plumbing so your team can focus on the workflow instead of the infrastructure.
Agent usabilityYou still need to expose the right Xero Accounting actions to the runtime in a format your agent can reliably use.52 tools for Xero Accounting are already exposed through ClawLink, so the agent can read and act from chat immediately.

Composio also exposes Xero Accounting to AI agents. It is developer infrastructure: Python and TypeScript SDKs, an MCP server, and a catalog past 1,000 apps, aimed at teams shipping agent products. ClawLink is built for Hermes Agent users instead. You install the plugin once, connect Xero Accounting in the browser, and the 52 tools above work from chat. There is no SDK, no config file, and no API key handling. Choosing between them? Read the full Composio alternatives comparison.

Troubleshooting

Hermes paired but still can't use Xero Accounting

Pairing is a two-step handshake: run hermes clawlink begin, approve the link in your browser, then run hermes clawlink finish. If you ran finish before approving, or the approval link expired, run hermes clawlink begin again to get a fresh link. Confirm the plugin was installed with --enable, then verify with hermes clawlink test.

Connection succeeds but no tools appear

Reconnect Xero Accounting from the dashboard, then start a fresh chat if the runtime still has the old tool catalog loaded.

"Tool schema not loaded yet" error when calling Xero Accounting tools

Xero Accounting tool schemas load on demand the first time a tool runs and are cached after that, so this error usually clears on its own: wait a few seconds and retry the same request. If every Xero Accounting call keeps failing with it in a fresh chat, reconnect from the dashboard, and contact support if it still persists — that pattern points to a configuration problem on our side, not something you can fix by reconnecting again.

Xero Accounting returns 403 or "permission denied" on one action while others work

Two usual causes. The connected account may not have access to the specific workspace, inbox, store, or project in the request — check that first. If access looks right, the agent may have sent a placeholder value (like "YOUR_ID" or an example id from documentation) instead of a real one: ask it to run a list or search tool first, then retry the action with a real id from those results. Most failures at this stage are one of these two, not ClawLink bugs.

Your organisation is missing from the Xero consent screen

The organisation is shown but greyed out, or does not appear at all, so the connection cannot be completed. Xero gives two causes: the person approving does not hold a Standard, Adviser, or Administrator role with the Connected Apps permission in that organisation, or that organisation is already connected to the app. Ask an Adviser or Administrator on the account to run the approval, or check Settings, then Connected apps, for an existing connection first.

401 with WWW-Authenticate: insufficient_scope

The connection is healthy and most tools work, but one action fails at the provider with a 401 carrying an insufficient_scope header. That means the token was issued without the permission this particular action needs. Scopes in Xero are additive and cannot be edited on a token that already exists, so the fix is to reconnect: start the connection again from the ClawLink dashboard and approve the consent screen, which mints a token carrying the current scope set. Xero's own guidance is to catch the 401 and prompt to update permissions rather than retrying the same call.

The agent reports no results when you know the records exist

A filtered read comes back empty and the agent concludes you have no matching invoices or transactions. Before believing it, suspect the filter. Xero's OData-style where clause returns an empty result rather than an error when the expression is malformed or a field name is wrong, so a typo reads exactly like an empty account. Field names are case-sensitive and exact (Status, Type, IsReconciled, BankAccount.AccountID), and string values need double quotes. Ask the agent to re-run the read with no where clause at all; if rows come back, the filter was the problem, not the books.

No Xero organizations connected

This is the provider's own message, and it means the sign-in worked but no organisation is attached to the connection any more. Three causes are common: consent was completed without an organisation being authorised, someone disconnected the app inside Xero (Settings, then Connected apps), or the connection sat unused for 60 days or more, which is when Xero expires an unused refresh token. The fix is the same in every case: reconnect from the ClawLink dashboard and approve the organisation on Xero's consent screen.

OAuth finished in the browser but the account is still missing

Try reconnecting Xero Accounting and complete the consent flow in the same browser session. Partial OAuth approvals or switching accounts mid-flow can leave the connection incomplete.

FAQ

Is there a Hermes Agent Xero Accounting integration?

Yes. ClawLink is the fastest way to connect Hermes to Xero Accounting: link your Xero Accounting account once in the browser and Hermes Agent can call the Xero Accounting API through 52 ready-made tools — no custom code or token handling.

How do I connect Xero Accounting to Hermes with ClawLink?

Install the plugin with hermes plugins install ClawLink-HQ/hermes-plugin --enable, then pair once: run hermes clawlink begin, approve the link in your browser, and run hermes clawlink finish. Connect Xero Accounting in the dashboard and Hermes can use it from the next message — no config files or API keys to manage.

How long does it take to connect Xero Accounting to Hermes Agent?

About two minutes. Sign in, click Connect next to Xero Accounting in the dashboard, authenticate, and Hermes Agent can use it from the next chat message.

Why use ClawLink instead of wiring Xero Accounting up myself?

The alternative to ClawLink is usually manual OAuth app setup plus your own token handling, permission troubleshooting, and tool plumbing for Hermes Agent. That is fine if you want to build and maintain the integration yourself. Most teams just want Xero Accounting working from chat.

Do I need a Xero developer app, client ID, or client secret?

No. You approve Xero in the browser through its normal consent screen, and ClawLink holds the credential; there is no trip to the Xero developer portal, no app to register, and no client secret to paste into a config file. This is the main practical difference from the self-hosted route. Xero's own open-source MCP server asks for a Custom Connection, which is a premium integration option: the Xero organisation has to buy a Custom Connection subscription before it can be authorised at all, it is only offered to organisations in Australia, New Zealand, the UK, and the US, and one connection reaches exactly one organisation. Those are Xero's terms for that connection type, not a criticism of the server.

Does connecting Xero to an AI agent mean my accounting data trains an AI model?

No, and the distinction is worth being precise about because the two things get conflated. Xero's Developer Platform Terms, last updated 4 December 2025, say that you "must not use API Data sourced from the Xero developer platform to train or fine tune any artificial intelligence models". That is a restriction on training models with the data, and ClawLink does not do it. It is not a ban on connecting an agent: reading your own invoices on demand, in response to something you asked, is ordinary API use and is what the tools below do. Anything the agent reads goes into that one answer, not into a training set.

Is it safe to connect Xero to Hermes?

The honest answer has three parts. First, the credential: you approve access on Xero's consent screen and the token stays on the ClawLink server rather than in a file on your machine, so revoking it is a click in Xero (Settings, then Connected apps) or in the ClawLink dashboard, and it stops working immediately. Second, the blast radius: the agent acts with the permissions of whoever approved the connection, on the single organisation approved, and it can write. Invoice, payment, contact, and manual journal tools post to your real books, so treat write prompts the way you would treat handing someone your Xero login. The financial reports are read-only and cannot change anything, which makes reporting the sensible place to start. Third, what we do not request: the connection asks for Xero's granular scopes rather than the deprecated broad ones, and it does not request accounting.journals.read, so the general ledger feed is out of reach by construction.

Can the agent post journals to Xero?

Manual journals, yes: xero_create_manual_journal and xero_update_manual_journal are in the tool list along with the matching read tools, so books-level adjustments work end to end. The read-only general ledger feed is a different thing: Xero restricts its Journals endpoint to apps on its Advanced developer tier, so it is deliberately not in the list. For ledger-level review, use the report tools and xero_list_manual_journals instead.

What financial reports can the agent pull?

Profit and loss (xero_get_profit_loss_report), balance sheet (xero_get_balance_sheet_report), and trial balance (xero_get_trial_balance_report), plus budgets through xero_get_budget. All of these are read-only, so a reporting workflow cannot change anything in your books, which makes reports the safe first prompt to try after connecting.

Can I connect more than one Xero organisation?

Yes. Each ClawLink connection is tied to the organisation you approve on Xero's consent screen. To work across several organisations, add another connection from the dashboard and tell the agent which one a task should use; when you do not say, the default connection is used. xero_get_organisation shows which organisation a connection is acting as, which is the quickest check when numbers look unfamiliar.

Hermes paired but still can't use Xero Accounting

Pairing is a two-step handshake: run hermes clawlink begin, approve the link in your browser, then run hermes clawlink finish. If you ran finish before approving, or the approval link expired, run hermes clawlink begin again to get a fresh link. Confirm the plugin was installed with --enable, then verify with hermes clawlink test.