Data to AI™ / Gemini/Xero

Query Xero from Gemini CLI and Code Assist

Let finance engineers and analysts pull unreconciled bank lines, tax by account and item prices from Xero in the terminal, and turn them into files the close and billing code can use.

Better answers, fewer tokens.

  • Lower AI costs for the same work
  • More accurate, reliable answers
  • Read-only
  • Uses the Xero data you already sync
  • SOC 2 Type II certified
Gemini CLI
Connected to Dataddo

How much cash came in and went out of each bank account in September?

Gemini Answer · Xero

September closed with a net inflow of $9,350: $89,600 Cash Received against $80,250 Cash Spent. The Business Account carried most of both.

Bank AccountCash ReceivedCash SpentClosing Balance
Business Account Reports - Bank summary $84,200$71,650$52,900
Business Savings Reports - Bank summary $5,400$0$40,000
Company Credit Card Reports - Bank summary $0$8,600-$3,150

Taken from the Bank summary report for one Date Start to Date Stop period, not rebuilt by adding up Bank Transactions.

source
Xero · as of Mon 06:40 UTC
covers
1-30 Sep 2026
Example answer · fictional account and figures
Xero in Gemini

Questions Gemini can answer from your Xero data

Xero is cloud accounting software for small and medium-sized businesses. Dataddo extracts invoices, payments and bank transactions as well as Xero reports such as Aged Receivables, Bank summary, Profit and Loss and Budget summary.

Reconciliation backlog as a file

Ask Gemini

Query Bank Transactions where Is Reconciled is false, with Date, Bank Account Name, Contact Name, Reference and Total, and write recon/unreconciled.csv sorted by Date.

Two days before month end, a finance engineer runs Gemini CLI in the close repository. The script that assigns lines to accountants reads the CSV, so the queue is split by bank account before the team starts.

Tax totals for the VAT notebook

Ask Gemini

From Journal Lines for last quarter, sum Net Amount and Tax Amount by Tax Type and Account Code, and add the result as a new cell in notebooks/vat-review.ipynb.

An analyst preparing the quarterly tax review asks from the terminal instead of exporting journals by hand, then checks accounts where the Tax Type looks wrong before the return is filed.

Price check before a billing deploy

Ask Gemini

Read Items where Is Sold is true and compare Code and Sales Details Unit Price with config/prices.yaml. List every item whose price differs.

Before shipping a change to the in-house billing service, a developer asks Gemini Code Assist in VS Code, so the release does not go out with prices that finance has already changed in Xero.

Xero datasets and the questions they answer in Gemini →
Pricing

Priced per seat.

Data to AI™ is priced per seat, like the AI assistants your team already uses, with ~25% off on annual billing. Need tailored contracts or volume pricing? Talk to us about Enterprise.

Data to AITM

Serve governed business data to Claude, ChatGPT and other AI tools over MCP.

$10.49/month

per seat

3 seats minimum

Enterprise

Flexibly deploy Dataddo in any cloud or hybrid environment.

Custom

We have a payment model that works for you

See all plans and features →
Setup

Connect Xero to Gemini step by step

  1. 1
    Connect Gemini to Dataddo Add the Dataddo server to settings.json in Gemini CLI, restart it and run /mcp auth dataddo to sign in. Gemini Code Assist in VS Code reads the same file.
  2. 2
    Connect Xero to Dataddo Sign in with your Xero account in Dataddo and choose the datasets to sync, such as Invoices and Reports - Aged Receivables Summary.
  3. 3
    Choose what Gemini can see Select the Xero data Gemini may query. Access is read-only, and data you don't select stays out of reach.
Gemini setup guide →
With vs. without

Xero in Gemini, with and without Dataddo

Without Dataddo With Dataddo Outcome for you
Unreconciled bank lines Someone exports Bank Transactions from Xero, filters out reconciled rows in a spreadsheet and emails the list around before the close. Gemini CLI queries Bank Transactions by Is Reconciled and writes the open lines straight into the repository the close scripts read. Close queue built from current data
Tax by account Journal exports land in a downloads folder, and the tax notebook reads whatever version was saved last. Journal Lines carries Tax Type, Tax Amount and Net Amount per Account Code, so the notebook cell is filled from the latest extraction. Tax review starts from fresh journals
Item prices in code Billing configuration drifts from Xero as finance updates selling prices, and nobody notices until an invoice is wrong. Gemini Code Assist reads Items with Code and Sales Details Unit Price, so a pre-release check compares config against the ledger. Prices match Xero before release
Control over each lookup A script with a stored Xero export runs unattended, and nobody reviews which data went into the result. Gemini CLI asks you to confirm each Dataddo tool call, and you choose Always allow only for the tools you trust. Every query visible in the terminal
Token consumption Gemini spends tokens exploring raw Xero columns, sampling rows and retrying until it understands the data. Field definitions and relations are supplied up front, so the model skips the exploration and goes straight to the answer. Fewer tokens per answer
Answer quality Prone to wrong joins, invented fields and numbers that are hard to check. Answers grounded in defined fields. In the Dataddo benchmark, 78.5% of questions were answered correctly, against 65.5% with plain CSV files. Better answers
Datasets

Xero datasets and the questions they answer in Gemini

The Xero datasets finance and RevOps teams use most, with their real field names. Gemini queries them by name through the Dataddo semantic layer.

Dataset Metrics and attributes Ask Gemini
Invoices
  • Contact Name
  • Due Date
  • Amount Due
  • Amount Paid
  • Status
  • + others
Write open invoices with Contact Name, Due Date and Amount Due to a CSV for the collections script.
Reports - Aged Receivables Summary Export Contact, Due Date and Due from the Aged Receivables summary as JSON for the month-end notebook.
Reports - Bank summary
  • Bank Account
  • Closing Balance
  • Cash Received
  • Cash Spent
  • + others
Which Bank Account ended any period this year with a Closing Balance below zero?
Profit and Loss Write Value per Item for each Date Start to Date Stop period this year to a CSV for the forecast notebook.
Reports - Budget summary Return the January and February budget per Account for this Year as JSON for the planning model.
Payments Export last month's Payments with Invoice Number, Amount and Date so a script can match them to the bank feed.
Profit and Loss by Tracking Category
  • Tracking Category Name
  • Account Name
  • Row Value
  • Row Label
  • + others
Write Row Value per Tracking Category Name and Account Name to a CSV for the department cost notebook.
Bank Transactions
  • Bank Account Name
  • Total
  • Is Reconciled
  • Contact Name
  • + others
List bank transactions where Is Reconciled is false, with Bank Account Name and Total, for the reconciliation script.
See all Xero datasets, metrics and attributes on the connector page →
Benchmark

More right answers. Half the confident mistakes.

We asked 43 pre-registered questions of three real datasets - Google Search Console, HubSpot deals and Google Ads - and delivered the same rows to the same model in four ways. Only the data layer changed.

78.5%

of questions answered correctly - the best of the four delivery methods tested

2x

fewer confidently wrong answers - 14.0% of runs against 24.0% and 26.3%

2.8x

more correct answers on messy CRM data - better on 8 questions, worse on none

Answered correctly All 43 questions - higher is better
Wrong, but stated as fact Share of runs - lower is better

Same model, prompts and rows in every condition; 759 graded runs, ground truth frozen before any run. On Google Search Console alone, documented CSV files did as well as Data to AI™ - the advantage comes from messier data such as HubSpot deals.

Read the benchmark →
FAQ

Xero and Gemini: FAQ

How do I connect Xero to Gemini?

Create a Xero source in Dataddo with Bank Transactions, Journal Lines and Items, and attach it to a Google Gemini destination or AI Model. Add a dataddo server with httpUrl https://headless.dataddo.com/mcp-data to ~/.gemini/settings.json, restart Gemini CLI and run /mcp auth dataddo to sign in.

How do I connect Xero to Gemini CLI?

Attach your Xero flow to a Google Gemini destination or AI Model in Dataddo. Then add Dataddo under mcpServers in settings.json with the httpUrl key, restart Gemini CLI, run /mcp auth dataddo and check /mcp.

Why does the settings.json entry need httpUrl rather than url?

With url, Gemini CLI falls back to SSE, which Dataddo does not support. Use httpUrl with no headers or oauth block, and sign-in happens through /mcp auth dataddo.

Can Gemini Code Assist query Xero inside my IDE?

Yes. Agent mode in VS Code reads the same settings.json as Gemini CLI. In IntelliJ, add the Dataddo server to the mcp.json of Gemini Code Assist.

Will Gemini see data other than Xero?

Yes, if it is attached. Once signed in, Gemini reaches every flow or Context attached to an AI destination or AI Model in that Dataddo account, not only the Google Gemini ones. Keep unrelated flows in a separate account.

Can I sign in with my Google account?

No. Sign-in uses your Dataddo email and password, with MFA if prompted. Google and Microsoft SSO are not offered here, and Gemini CLI needs a browser on the same machine to open the sign-in page.

What happens when the Gemini session expires?

Credentials are kept in ~/.gemini/mcp-oauth-tokens.json and renewed automatically. If a session expires or is revoked, run /mcp auth dataddo again.

Can Gemini reconcile transactions or post journals in Xero?

No. Gemini reads data Dataddo has already extracted, by entity and field name through the semantic layer. Dataddo never accepts SQL from the model and nothing is written back to Xero.

New from Dataddo · Data to AI™

Ask Claude or ChatGPT about your ads, analytics and CRM

“What did a new lead cost us last week, by paid channel?”

Connect 400+ sources once and get the answer right in your AI chat, without building a report. Better answers: your metrics are defined once, so the AI doesn't have to guess.