ato-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_datasetsA | Fuzzy-search the curated ATO/ACNC dataset catalog. All datasets ship hand-curated in v0.1: personal tax by postcode, company tax by industry, corporate tax transparency, GST collections, super contributions by age, the ACNC charity register, and more. Examples: # Find the dataset that gives tax stats by postcode results = await search_datasets("postcode tax") # → [{id: 'IND_POSTCODE', name: 'Individuals by Postcode', ...}] Returns: List of DatasetSummary (id, name, description, update_frequency, is_curated), ranked by relevance. |
| describe_datasetA | Describe a dataset's filterable dimensions, returnable measures, units, and source. Use this before calling get_data on a new dataset — it tells you the valid filter keys ('state', 'postcode', 'industry'), the valid filter values ('nsw', 'vic'), the measure aliases ('median_taxable_income'), and the canonical source URL. Returns: DatasetDetail with id, name, description, period_coverage, list of dimensions, list of measures (each with key, source_column, unit, description), and source_url + download_url. |
| get_dataA | Query a curated ATO/ACNC dataset and return observations. Examples: # Median taxable income in postcode 2000 (Sydney CBD), 2022-23 resp = await get_data( "IND_POSTCODE_MEDIAN", filters={"state": "nsw", "postcode": "2000"}, measures="median_taxable_income_2022_23", ) Returns: DataResponse with records (or csv), unit, period bounds, row_count, source URL, and CC-BY attribution. |
| latestA | Return the most recent observation(s) per measure for a dataset. For transposed time-series tables (GST_MONTHLY etc.) this trims to the most-recent period. For wide single-year tables (IND_POSTCODE etc.) it returns the same shape as get_data — there is only one period in those tables to begin with. Examples: # Latest monthly net GST nationally resp = await latest("GST_MONTHLY", measures="net_gst") |
| top_nA | Return the N rows with the largest (or smallest) value of a measure. This is the most common agent workflow: "show me the top 10 X by Y". Without this tool, an agent would call get_data, receive the full table, and then sort/slice locally — wasting tokens and turns. top_n does the rank server-side and returns only the requested rows. Examples: # Top 10 corporate taxpayers in 2023-24 top_n("CORP_TRANSPARENCY", "tax_payable", n=10) Returns:
DataResponse with at most |
| statsA | Aggregate statistics (count, sum, mean, median, min, max, stddev) for one measure across all rows matching filters. Optionally grouped. Without Examples: # Single aggregate over NSW postcodes stats("IND_POSTCODE_MEDIAN", "median_taxable_income_2022_23", filters={"state": "nsw"}) # → {statistics: {count: 587, mean: 55017, median: 53484, ...}} Returns:
Without group_by: dict with |
| list_curatedA | List every curated dataset ID in this version of ato-mcp. These are the datasets where get_data accepts plain-English filter keys and returns aliased, well-typed measure columns. Each ID is documented via describe_dataset. Returns: Sorted list of dataset IDs. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Bigred97/ato-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server