Can an AI agent use Xero?

As of 6 Oct 2026, an AI agent can't use Xero on its own: Phone number required at sign-up.

Level 1 · Needs a personAgents can't get in on their own.
  • Find: Some docs for agents: An OpenAPI and an MCP server.
  • Access: Can't sign up.
  • Use: Work not reached.
  • Pay: Payment not reached.
  • Leave: Leaving not reached.

To reach L2 · Gets in: let an agent sign up on its own.

With an account set up by a person: not measured yet.

What the levels mean

Driven 6 Oct 2026Same level in 2 drives in a rowRules of 15 Oct 2026Claim this page

Written and checked by our agents from this drive's record. How we write.

Who gets in

  • Agents on a serverCan't get in on their own.
  • Signed agentsThe sign-up page opens.
  • Agents in a person's browserNot measured yet.

Sign-up page checked 13 Oct 2026. Signed agents: the ones Cloudflare verifies. Where agents come from

What an agent can do in Xero.

On its own

  • Read Xero's technical documentation and setup guides without logging in.
  • Install Xero's official developer tool and see the list of actions it offers, without needing an account.

What it can't, and why

  • Create a Xero account, trial or developer loginBoth sign-up forms require a phone number the agent doesn't have
  • Get an access key to use Xero's APIKeys are only issued inside a logged-in account, which could not be created
  • Do anything with invoices, bills, contacts, reports or bank dataNo account exists to hold that data
Needs a person

Can an AI agent sign up for Xero on its own?

No. Sign-up: needs a human. Phone number required on both the one-month-free trial form (Step 2: 'Please supply a valid phone number') and the free developer login ('Country code is required', 'Please supply a valid phone number', 'Choose a location'); we have none

Official server · 1 of 2 calls worked

Does Xero have an MCP server, and can an agent connect to it?

Yes. Xero has an official MCP server. The server runs on the agent's own machine, lists 51 tools and speaks the older 25 Nov 2025 MCP spec.

A new agent can't get in on its own: in the drive of 6 Oct 2026, our agent stopped at sign up (it needs a person). Through the MCP server, 1 of our agent's 2 attempts worked.

What the drive found

APIOpenAPIMCP · officialCLISDK–llms.txtWebhooksSandbox

Not reached in this drive: the API key, deleting the account and paying. Every checkpoint, in detail

For the team behind Xero.

Where agents stop in Xero today, and the fixes that get them further, highest impact first.

Stops at sign up

The fixes, highest impact first

  1. Make the phone number optional at sign-upStep-by-step guide
  2. Add a headless OAuth credential pathStep-by-step guide
  3. Serve Protected Resource Metadata on the APIStep-by-step guide
2 more fixes
  1. Support MCP (the 28 Jul 2026 spec) and a remote endpoint
  2. Publish llms.txt and markdown docs Step-by-step guide
  • Claim it free and reply next to the result.
  • A Drive, $49: your private report, with where agents stop, the evidence and the fixes that move your level.
  • Fixed something? Order a Drive ($49) any time, or the Monthly drive ($29/month).
See the example report
Details

Your API, MCP server or CLI is the product? An Audit ($299) also checks every documented route, MCP tool and CLI command against your docs. Compare plans.

Already claimed it? Open it in your dashboard.

Rather not be driven? Block AgentDrivesAgent in robots.txt or write to us. We stop driving it ourselves; this page stays, with its date.

Embed the badge on your site

Driven · L1 · Needs a person badge

Behind the level.

Our agent couldn't get into Xero, so the work, its reliability and the crash test aren't measured. The part scores are what it could judge from the outside.

Part scores · level history

Part scores

Agent-ready setup

  • llms.txt: not found
  • OpenAPI: found
  • MCP server: found
  • CLI: found

Not measured in this drive: Holds up, Docs match (part of an Audit).

Level history

  1. 2 Oct 2026L1Needs a person
  2. 6 Oct 2026L1Needs a person

For agents and builders.

The drive as data, every checkpoint and all 26 attempts.

How an agent connects · 4 tips
  • With a human-made account, use the Demo Company with a free Custom Connection (client_credentials) and the official MCP server or the REST API
  • The MCP server is stdio and answers protocol 2025-11-25: use initialize, not server/discover
  • Read the docs from GitHub (XeroAPI/Xero-OpenAPI, xero-mcp-server); developer.xero.com needs JavaScript
  • The CLI's xero login opens a browser for PKCE (callback on localhost:8742)
Every checkpoint, in detail · 9 checkpoints
  1. DocsHeadlessOpenAPI 3.0.0, MCP and CLI READMEs on GitHub read headless; developer.xero.com pages render client-side
  2. Sign upNeeds a humanPhone number required on both the one-month-free trial form (Step 2: 'Please supply a valid phone number') and the free developer login ('Country code is required', 'Please supply a valid phone number', 'Choose a location'); we have none
  3. VerifyNot reachedno account, so no verification mail
  4. KeyNot reachedOAuth apps are made at developer.xero.com/app/manage after login; no DCR, CIMD or device flow in AS metadata; Custom Connections need a monthly subscription except on the Demo Company
  5. First callNot reachedunauthenticated GET /api.xro/2.0/Organisation returns 401 AuthenticationUnsuccessful; no credentials
  6. First actionNot reachedno org
  7. PayNot reachedNo 402, x402, MPP or UCP (x402./mpp./agents.xero.com have no DNS; /.well-known/ucp 403). Purchase and the one-month-free trial go through a 4-step web form that asks for a phone number before the payment step; the payment step was not reached, so whether the trial needs a card is unknown
  8. CancelNot reachedno plan started
  9. DeleteNot reachedno account created
The attempt log · 26 attempts
Attempt log
CapabilityRouteResultEvidence
robots.txt / aipref: GET https://www.xero.com/robots.txtapidone ✓200 text/plain; User-Agent: * with Disallow /content/xero/, /media/, /api/*, /downloads/* etc.; no Content-Usage or Content-signal lines
llms.txt: GET www.xero.com/llms.txt and developer.xero.com/llms.txtapifailed ✓www.xero.com/llms.txt 503 text/html error page; developer.xero.com/llms.txt 404
agent cards / well-known: GET /.well-known/ai-catalog.json, agent-card.json, agent.json, mcp/server-card.json, ucp, /auth.md, /SKILL.md on www.xero.comapifailed ✓well-known paths 403 application/xml S3 AccessDenied; /.well-known/ucp 301 then 403; /auth.md 404; /SKILL.md 301 -> /skill.md 404
OAuth metadata: GET identity.xero.com/.well-known/oauth-authorization-server and api.xero.com/.well-known/oauth-protected-resource; unauth GET /api.xro/2.0/Organisationapipartial ✓AS metadata 200 JSON: grants authorization_code, client_credentials, refresh_token; PKCE S256; no registration_endpoint, no device_authorization_endpoint, no CIMD flag, no agent_auth. PRM on api.xero.com 404. Unauth API 401 application/json {Title:Unauthorized,Status:401,Detail:AuthenticationUnsuccessful}, WWW-Authenticate: Bearer (no resource_metadata)
Markdown docs: GET developer.xero.com accounting overview with Accept: text/markdown and .md URLapifailed ✓Accept: text/markdown -> content-type text/html, no Vary: Accept; overview.md -> 200 with body "Not Authorized."; docs pages are client-rendered (curl HTML has no text)
OpenAPI: GET github.com/XeroAPI/Xero-OpenAPI xero_accounting.yamlapidone ✓openapi: 3.0.0, 235 operationIds, no x-payment-info
MCP server: npm @xeroapi/xero-mcp-server 0.0.17 (stdio); send server/discover with 2026-07-28, then initializemcpdone ✓server/discover -> JSON-RPC -32601 Method not found; initialize offering 2026-07-28 -> protocolVersion 2025-11-25, serverInfo Xero MCP Server 1.0.0; tools/list -> 51 tools (create-invoice, create-contact, create-quote, create-payment, create-bank-transaction, list-profit-and-loss, list-report-balance-sheet, payroll timesheets...)
Custom Connections terms: read developer.xero.com custom-connections guide (rendered)browserdone ✓"Custom Connections are only available for Xero organisations in Australia, New Zealand, the UK, and the US and require an additional monthly subscription... can be connected to the Xero Demo Company for free for development purposes"
Sign up for a free trial: Start the US one-month-free trial (Early plan) at www.xero.com/us/signup/try/early/browserblocked ✓No sign-up API. Headless GET /us/signup/ redirects to pricing; trial form is a JS SPA (recaptcha script loaded, no visible challenge). Step 2 Account details: name, email, terms filled; submit without phone -> inline error "Please supply a valid phone number" under the required Phone field; form stays on Step 2 of 4
Create a free developer login: Create a free Xero login for the API at www.xero.com/signup/developers/ (linked from developer.xero.com)browserblocked ✓Form fields First name, Last name, Email, Phone (country code + number), Location, terms. Submit without phone/location -> "Country code is required", "Please supply a valid phone number", "Choose a location"; stays on form. reCAPTCHA script present, no visible challenge
Find docs: Read developer.xero.com docs, AI toolkit, OpenAPI on GitHub, MCP and CLI READMEsapidone ✓developer.xero.com/ai links MCP server (github XeroAPI/xero-mcp-server), CLI (XeroAPI/xero-command-line, PKCE browser login), agent toolkit, prompt library; OpenAPI 3.0.0 on GitHub; docs HTML is client-rendered (curl gets no text), so headless reading needs GitHub sources or a browser
Get API credentials: Get an OAuth client (Custom Connection client_credentials or PKCE app) for an orgnoneblockedApps are created at developer.xero.com/app/manage after login; no account (phone required at sign-up). AS metadata has no registration_endpoint, no CIMD, no device flow; Custom Connections need a monthly subscription except on the Demo Company
First API call: GET /api.xro/2.0/Organisationapiblocked ✓Unauth 401 application/json {"Title":"Unauthorized","Status":401,"Detail":"AuthenticationUnsuccessful"}, WWW-Authenticate: Bearer
First create: Create a contact via MCP create-contactmcpblockedno org and no credentials
Buy a plan the agent way: Probe 402/agentic rails and the self-serve purchase pathapiblocked ✓Unauth API calls return 401 Bearer, not 402; x402./mpp./agents.xero.com have no DNS; /.well-known/ucp 301->403, no x-payment-info in OpenAPI; no Xero entry found in x402 Bazaar first page, mpp.dev/api/services, projects.dev; pricing page: Buy now (80% off 3 months) or one month free trial via a 4-step web signup whose Step 2 requires a phone number; checkout step ("before you enter your payment information") not reached
Create and send an invoice: Create and send an invoice in our own orgnoneblockedno Xero account: both sign-up forms (trial and developer) require a phone number
Accept online invoice payments: Accept online invoice payments in our own orgnoneblockedno Xero account: both sign-up forms (trial and developer) require a phone number
Send a quote: Send a quote in our own orgnoneblockedno Xero account: both sign-up forms (trial and developer) require a phone number
Enter a bill: Enter a bill in our own orgnoneblockedno Xero account: both sign-up forms (trial and developer) require a phone number
Make an online bill payment: Make an online bill payment in our own orgnoneblockedno Xero account: both sign-up forms (trial and developer) require a phone number
Bank feed / bank transactions: Bank feed / bank transactions in our own orgnoneblockedno Xero account: both sign-up forms (trial and developer) require a phone number
Financial reports: Financial reports in our own orgnoneblockedno Xero account: both sign-up forms (trial and developer) require a phone number
Cash flow forecast: Cash flow forecast in our own orgnoneblockedno Xero account: both sign-up forms (trial and developer) require a phone number
Create a contact: Create a contact in our own orgnoneblockedno Xero account: both sign-up forms (trial and developer) require a phone number
Cancel plan: Cancel trial/plannoneskippedno plan started
Delete account: Delete account and datanoneskippedno account created

Also in Invoicing.