Boxkite — Xero Backup & Export

Complete read-only backup and export of Xero accounting data as a ZIP plus a manifest.

Community: Submitted by a user or imported; check the owner before granting accessOnlineAPI key requiredGlobalFreeRead-only

What it can do

    What data it sees

    Do you need an account

    An API key from the service settings is required

    Complete read-only backup and export of Xero accounting data as a ZIP plus a manifest.

    How to connect

    How to connect Boxkite — Xero Backup & Export to Claude

    The server address to paste into Claude settings:

    https://app.getboxkite.com/mcp

    1. Open Claude (claude.ai or the desktop app).
    2. Go to Settings → Connectors.
    3. Click Add custom connector.
    4. Paste the server address copied below into Remote MCP server URL and click Add.
    5. In a chat, click + → Connectors and switch the new connector on.

    Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.

    Authorization

    After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.

    How to connect Boxkite — Xero Backup & Export to ChatGPT

    The server address to paste into ChatGPT settings:

    https://app.getboxkite.com/mcp

    1. Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
    2. Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
    3. Open Settings → Connectors and click Create.
    4. Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
    5. Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
    6. In a new chat open + → Apps/Connectors and enable the connector.

    OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.

    Authorization

    On first use ChatGPT opens the service's sign-in window. Sign in and approve access.

    How to connect Boxkite — Xero Backup & Export to Cursor

    The server address to paste into Cursor settings:

    https://app.getboxkite.com/mcp

    Fastest: click Open in Cursor below and confirm the prompt.

    Manually:

    1. In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
    2. Paste the JSON copied below into ~/.cursor/mcp.json (per project: .cursor/mcp.json in the repo root).
    3. Save the file. The server appears in the MCP list; authorize it there if asked.

    Authorization

    If the service needs sign-in, an authorize button appears next to the server in the MCP list.

    Server tool list (7)

    Raw names from tools/list. Only developers need these.

    list_organisationsList the accounting organisations (Xero, Sage, Reckon, or QuickBooks) connected to the authenticated Boxkite account.
    start_exportStarts a read-only export of one accounting organisation's data (Xero, Sage, Reckon, or QuickBooks). Costs $39 per organisation: when payment is outstanding the response is status 'awaiting_payment' with a Stripe checkoutUrl for the user to complete in a browser, and the export begins once that payment settles. This is not a status endpoint: it reports only the state at creation, and repeat calls return the existing export for that organisation rather than creating or charging for a second one. Export progress is reported by get_export_status, and newly created exports appear in list_exports. A typical export runs for hours, and pauses whenever it meets a provider rate limit or Boxkite's egress budget — anything from under a minute to the next UTC day. get_export_status reports when it resumes.
    list_exportsList one-off exports (newest first), optionally for one organisation. Use this to find an export after payment and to poll its status until it is 'ready'. Side-effect free: it never starts a new export or charges anything. Each entry carries progress, parkedUntil and pollAfterSeconds.
    get_export_statusReports the state of one export: status (queued | running | ready | failed) and whether its download is available yet. Also returns progress {discovered, transferred, percent}; parkedUntil; and pollAfterSeconds, the interval after which this status is expected to have changed. A large export runs for hours, so pollAfterSeconds can be a long interval. parkedUntil is a timestamp, present whenever work on the organisation is paused and expected to resume. How long varies by cause and is not worth guessing at: hitting Xero's per-minute limit pauses for under a minute, approaching its daily quota pauses for about an hour, and exhausting the daily quota or Boxkite's own egress budget pauses until the next UTC day. Wait until the timestamp (or pollAfterSeconds, which already accounts for it) rather than describing a cause to the user.
    get_export_manifestSee what an IN-PROGRESS export contains so far (entities included, per-entity record/file counts, and per-file checksums), growing as discovery and downloading proceed. The per-file list is paged: check filesPage.hasMore and pass fileOffset to walk it. Once the export finishes, this returns status 'complete' with a pointer instead of a list, because the full manifest travels inside the ZIP as manifest.json: get a download URL, then read manifest.json from the archive.
    get_export_mappingFor an IN-PROGRESS export, get the mapping of each file discovered so far to the accounting object it represents or is attached to (e.g. which invoice a receipt PDF belongs to). Paged (default 200 files, max 500): check filesPage.hasMore and pass fileOffset for the next page; the `objects` map covers only the files on the current page. Once the export finishes, this returns status 'complete' with a pointer instead: the full mapping ships under Info/ inside the ZIP, so download the archive and read Info/files.json from it.
    get_download_urlReturns a short-lived signed URL for the export ZIP, valid within the export's 7-day retention window, along with byteSize (the archive's size in bytes, null if unavailable) and fileCount. These archives range from a few MB to several GB. The archive contains the exported files plus manifest.json (every file with its sha256) and Info/ (the file-to-Xero-object mapping).