{
  "markdown": "# apra-mcp\n\nmcp-name: io.ausdata/apra-mcp\n\n[![PyPI](https://img.shields.io/pypi/v/apra-mcp.svg)](https://pypi.org/project/apra-mcp/)\n[![Python](https://img.shields.io/pypi/pyversions/apra-mcp.svg)](https://pypi.org/project/apra-mcp/)\n[![License](https://img.shields.io/pypi/l/apra-mcp.svg)](https://github.com/Bigred97/apra-mcp/blob/main/LICENSE)\n[![Tests](https://github.com/Bigred97/apra-mcp/actions/workflows/test.yml/badge.svg)](https://github.com/Bigred97/apra-mcp/actions/workflows/test.yml)\n[![CodeQL](https://github.com/Bigred97/apra-mcp/actions/workflows/codeql.yml/badge.svg)](https://github.com/Bigred97/apra-mcp/actions/workflows/codeql.yml)\n[![Glama MCP server quality](https://glama.ai/mcp/servers/Bigred97/apra-mcp/badges/score.svg)](https://glama.ai/mcp/servers/Bigred97/apra-mcp)\n\n**MCP server for Australian Prudential Regulation Authority statistics.** Plain-English access to per-bank capital ratios, fund-by-fund superannuation, and post-AASB17 life + general insurance — every prudentially-regulated entity in Australia, every quarter, from a single `uvx` command.\n\n> **Hosted access?** For cross-source queries, webhooks, an always-on REST API, and a uniform response envelope across all 9 sources, see **[ausdata.io](https://ausdata.io)** — free tier available (500 calls/mo, no card).\n\n```text\n\"What's CBA's CET1 ratio?\"\n\"Which super fund has the most members?\"\n\"Top 10 banks by total capital, latest quarter\"\n\"Gross written premium for the general insurance industry, post-AASB17\"\n\"Largest life insurance product groups by claims\"\n```\n\nSister to [abs-mcp](https://github.com/Bigred97/abs-mcp), [rba-mcp](https://github.com/Bigred97/rba-mcp), [ato-mcp](https://github.com/Bigred97/ato-mcp), and [au-weather-mcp](https://github.com/Bigred97/au-weather-mcp).\n\n---\n\n## Install\n\n```bash\nuvx --upgrade apra-mcp\n```\n\n### Claude Desktop\n\n```json\n{\n  \"mcpServers\": {\n    \"apra\": { \"command\": \"uvx\", \"args\": [\"--upgrade\", \"apra-mcp\"] }\n  }\n}\n```\n\n### Claude Code\n\n```bash\nclaude mcp add apra --command uvx --args -- --upgrade apra-mcp\n```\n\n---\n\n## What it exposes\n\nSix tools, all plain-English in, structured out:\n\n| Tool                | Purpose                                                       |\n|---------------------|---------------------------------------------------------------|\n| `search_datasets`   | Fuzzy-search the curated catalog by keyword                   |\n| `describe_dataset`  | List a dataset's filterable dimensions and returnable measures |\n| `get_data`          | Query with `filters`, `measures`, period range, output format |\n| `latest`            | Last observation per measure (shortcut)                       |\n| `top_n`             | Rank rows by a measure, return top (or bottom) N              |\n| `list_curated`      | Enumerate the curated dataset IDs                             |\n\nEvery response is the same shape — `dataset_id`, `dataset_name`, `query`, `period`, `unit`, `row_count`, `records`, `apra_url`, `download_url`, `framework` (insurance only), `attribution`, `stale` flag, `server_version` — across every curated dataset.\n\n---\n\n## Curated datasets (7 in v0.1)\n\n| ID                              | What it is                                                                  | Period             |\n|---------------------------------|-----------------------------------------------------------------------------|--------------------|\n| `ADI_KEY_STATS`                 | Per-bank CET1 / Tier 1 / Total capital + RWA                                | latest quarter snapshot |\n| `ADI_RISK_WEIGHTED_ASSETS`      | Per-bank RWA by risk type (credit / operational / market / IRRBB)            | latest quarter snapshot |\n| `SUPER_FUND_LEVEL`              | Fund-by-fund members, benefits, demographics                                | latest quarter snapshot |\n| `INSURANCE_GENERAL`             | Long-format general insurance (post-AASB17, ~24k rows × 10 quarters)         | Sep 2023 → latest  |\n| `INSURANCE_GENERAL_HISTORICAL`  | General insurance archive (pre-AASB17)                                       | Dec 2002 → Jun 2023|\n| `LIFE_INSURANCE`                | Long-format life insurance (post-AASB17, ~10k rows × 10 quarters)            | Sep 2023 → latest  |\n| `LIFE_INSURANCE_HISTORICAL`     | Life insurance archive (pre-AASB17)                                          | Jun 2008 → Jun 2023|\n\n> **Snapshot vs time-series.** ADI and Super datasets ship the most recent\n> reporting quarter only (APRA refreshes the file each quarter). The four\n> insurance datasets are long time series in a single file. Pass\n> `start_period` / `end_period` as ISO dates (`2025-12-31`), bare years\n> (`2024`), year-months (`2025-06`), or quarter shorthand (`2025-Q4`) — all\n> normalised internally.\n\n> **Cross-source compatibility.** The `state_territory` filter on\n> `INSURANCE_GENERAL` accepts canonical state codes (`\"NSW\"`), full names\n> (`\"New South Wales\"`), case-insensitive variants (`\"nsw\"`), ISO 3166-2\n> (`\"AU-NSW\"`), and 4-digit postcodes (`\"2000\"` → New South Wales). Powered\n> by [`aus-identity`](https://pypi.org/project/aus-identity/) — the same\n> input format works across abs-mcp, ato-mcp, apra-mcp, aihw-mcp, and\n> asic-mcp.\n\n---\n\n## Reliability — 3-tier URL resolution\n\nAPRA publishes XLSX at date-versioned paths that change every quarter. apra-mcp resolves them through three tiers:\n\n1. **Live scrape** — fetch the canonical APRA landing page (with ETag conditional-GET so refreshes between releases cost zero bytes), regex-extract the .xlsx href matching the dataset's filename pattern, pick the latest-dated match. Cached 6h.\n2. **Bundled seed manifest** — when the live scrape fails, fall back to `data/seed_urls.json` shipped in the wheel. CI refreshes the manifest daily. The response is flagged `stale: true` with an honest reason.\n3. **YAML default** — last-resort URL from the curated YAML.\n\nNet effect: a fresh `uvx apra-mcp` always gets the current quarter; a 3-month-old install still works because the seed manifest is refreshed and `--upgrade` pulls a new wheel.\n\n---\n\n## Framework break (insurance only)\n\nAPRA changed the reporting framework on 1 July 2023 (AASB 17 Insurance Contracts + capital framework revision). Pre- and post-break data are **not directly comparable** — APRA's own guidance is explicit. apra-mcp ships paired datasets:\n\n- `INSURANCE_GENERAL` (post-AASB17) + `INSURANCE_GENERAL_HISTORICAL` (pre-AASB17)\n- `LIFE_INSURANCE` (post-AASB17) + `LIFE_INSURANCE_HISTORICAL` (pre-AASB17)\n\nEvery response on an insurance dataset includes a `framework` block surfacing the break + a `historical_dataset` cross-reference, so agents see the warning before splicing series.\n\n---\n\n## Attribution\n\nData sourced from the Australian Prudential Regulation Authority. Licensed under [Creative Commons Attribution 3.0 Australia (CC BY 3.0 AU)](https://creativecommons.org/licenses/by/3.0/au/). apra-mcp is MIT-licensed; APRA's data carries the upstream CC-BY 3.0 AU licence, echoed in every response's `attribution` field.\n\n---\n\n## Sister MCPs (Australian Public Data portfolio)\n\n> **Want all 9 sources behind one REST API?** The hosted gateway at **[ausdata.io](https://ausdata.io)** adds cross-source joins, full history, webhooks, and HMAC-signed responses on top of these MCPs — free tier (500 calls/mo, no card).\n\n- [abs-mcp](https://pypi.org/project/abs-mcp/) — Australian Bureau of Statistics (CPI, unemployment, ERP, building approvals)\n- [rba-mcp](https://pypi.org/project/rba-mcp/) — Reserve Bank of Australia (cash rate, lending stats, exchange rates)\n- [ato-mcp](https://pypi.org/project/ato-mcp/) — Australian Taxation Office (tax stats, ACNC charities)\n- **apra-mcp** — this one. Banks, super, insurance.\n- [aihw-mcp](https://pypi.org/project/aihw-mcp/) — Australian Institute of Health and Welfare\n- [asic-mcp](https://pypi.org/project/asic-mcp/) — Australian Securities and Investments Commission (company registers)\n- [aemo-mcp](https://pypi.org/project/aemo-mcp/) — Australian Energy Market Operator (NEM dispatch, spot prices, generation)\n- [au-weather-mcp](https://pypi.org/project/au-weather-mcp/) — Open-Meteo (Bureau of Meteorology aggregator)\n- [wgea-mcp](https://pypi.org/project/wgea-mcp/) — Workplace Gender Equality Agency\n- [aus-identity](https://pypi.org/project/aus-identity/) — Postcode / state / ABN normalisation helper used by all sisters\n\n---\n\n## Development\n\n```bash\ngit clone https://github.com/Bigred97/apra-mcp.git\ncd apra-mcp\nuv venv\nuv pip install -e \".[dev]\"\npytest                  # unit tests\npytest -m live          # integration tests against apra.gov.au\n```\n\nIssues and contributions welcome: [github.com/Bigred97/apra-mcp/issues](https://github.com/Bigred97/apra-mcp/issues).\n",
  "bytes": 8714,
  "sha": "f3e5aa9fc256a62f08e3a3722dca8769b1e645fc25dbf31c1c6293fd8b97f377",
  "repo_slug": "bigred97/apra-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_ausdata_apra_mcp_b7509dc2/readme"
}