Documentation

Two minutes to install. A career's worth of tax, on tap.

ato-mcp is an MCP server: it plugs into Claude Code, Cursor, Codex or any Model Context Protocol host and turns the Australian tax corpus into tools your agent can call. One line to install, sign in with your browser, done.

1 · Install

Hosted

zero download
claude mcp add --transport http ato https://api.ato-mcp.com.au/mcp

Run it, then authenticate from inside your client. Your browser opens to sign in. Every other client (Codex, Gemini CLI, Cursor, VS Code, …) is one line too: see the install picker.

2 · Connect your agent

Any MCP host

{"mcpServers":{"ato":{"url":"https://api.ato-mcp.com.au/mcp"}}}

Then just ask: “What can I claim as a sole-trader carpenter?” The agent calls get_user_facts once, then deduction_discovery, and answers with citations.

3 · The 13 tools

Workflows

deduction_discovery

Every plausibly-applicable deduction category for your taxpayer shape, cited and confidence-rated.

deduction_discovery({ activity: "bought a laptop" })

depreciation_helper

Prime-cost / diminishing-value / IAWO / pool / Div 43 schedules, computed deterministically.

depreciation_helper({ asset_cost: 4800, acquisition_date: "2025-09-01", effective_life_years: 3 })

bas_prep_checklist

A tiered, cited BAS checklist for your reporting period — labels, evidence, gotchas.

bas_prep_checklist({ period_type: "quarterly", quarter: 2 })

audit_risk_check

Heuristic ATO red-flags over a draft return, risk-banded with the guidance behind each.

audit_risk_check({ income: 90000, deductions: [...] })

Retrieval

search

Hybrid BM25 + vector search over the whole corpus, rank-fused, point-in-time aware.

search({ query: "instant asset write-off eligibility", k: 5 })

get_chunks

Resolve chunk_ids to full passages with optional neighbouring context.

get_chunks({ chunk_ids: ["legis:…/8-1#0"], neighbours: 1 })

get_doc

Fetch a whole document — metadata, full text in reading order, and its anchor list.

get_doc({ doc_id: "legis:c2004a05138/8-1" })

get_doc_anchors

The citation graph around a document: anchors, inbound and outbound references.

get_doc_anchors({ doc_id: "legis:c2004a05138/8-1" })

get_definition

Statutory definitions (ITAA 1997 Dictionary and friends), point-in-time selectable.

get_definition({ term: "depreciating asset" })

get_threshold

Time-keyed scalar facts — IAWO limit, GST registration threshold, CGT discount, super caps.

get_threshold({ name: "instant_asset_write_off" })

fetch

Live-fetch a page by URI scheme (ato:, ato-law:, legis:) when freshness matters.

fetch({ uri: "ato:tax-rates-and-codes/…" })

stats

Corpus snapshot: counts and schema version.

stats({})

Personal context

get_user_facts

Your onboarded profile — 25 facts the agent reads once per session instead of re-asking.

get_user_facts({})

Full input/output schemas, examples and error behaviour live in the repo: docs/tools.md

GitHub

The MCP client is open source (AGPL-3.0). Read the code you run.

Privacy

Generated from the database schema, so it shows exactly what's stored.