Releases: Bigred97/apra-mcp
Release list
v0.8.20
[0.8.20] — 2026-05-19
Fixed
- Per-thread
_clientcache (P0 prod bug, observed on ausdata-api):
module-global_clientbound to the FIRST event loop and tripped
RuntimeError: Event loop is closedwhen called from a multi-loop
host that wraps the MCP and runsasyncio.run(_get_data_impl(...))
in a worker thread per request. Cache moved tothreading.local()
so each worker thread gets its own client bound to its own loop.
reset_client_for_tests()now only clears the calling thread.
0.8.19 — prewarm_curated() + --warmup CLI
Ports abs-mcp 0.11.14 prewarm pattern. 304 unit tests pass.
0.8.18 — year-range hints on out-of-range filter
Same year-range messaging fix as aihw 0.4.16. 304 unit tests pass.
0.8.17 — short-query ranker fix
Short-query partial_ratio supplement so single-token queries find their canonical dataset by name even when the name has lots of additional context. Matches ato 0.8.16 design. 304 unit tests pass.
v0.1.2 — latest() fix + period normalisation + did-you-mean
Three real customer-facing bugs squashed.
Bugs fixed
-
latest()on long-format insurance datasets returned a single record
instead of the latest quarter's worth. Root cause waslast_n=1collapsing
to one record per measure; long-format datasets carry a singlevalue
measure with the semantic metric in thedata_itemdimension. After the
fixlatest("LIFE_INSURANCE")returns ~860 records (the full latest-period
slice). AffectsINSURANCE_GENERAL,INSURANCE_GENERAL_HISTORICAL,
LIFE_INSURANCE,LIFE_INSURANCE_HISTORICAL. -
Period filters with quarter shorthand (
2025-Q4) or bare years (2024)
silently returned zero rows. Lexical string comparison putQ > 1in
ASCII so ISO dates were always excluded. New_expand_period_input
normaliser convertsYYYY,YYYY-MM,YYYY-Qx(and lowercaseq) into
proper ISOYYYY-MM-DDbounds. -
Did-you-mean suggestions on unknown filter values:
Unknown value 'major' for filter 'sector'. Did you mean 'major_banks'?
Documentation honesty
The ADI centralised publication and the Super fund-level XLSX are
snapshot files (latest quarter only), not the multi-year time series
the filenames suggest. ADI_KEY_STATS, ADI_RISK_WEIGHTED_ASSETS, and
SUPER_FUND_LEVEL YAMLs corrected to say so. Insurance datasets remain
true time series.
Quality
- 263 unit tests (34 new) + 16 live integration tests
- Zero-flake across 10 sequential runs
- Wheel built and verified in isolation against live APRA Q4 2025 data
Install
uvx --upgrade apra-mcp
# or, direct from this release:
pip install https://github.com/Bigred97/apra-mcp/releases/download/v0.1.2/apra_mcp-0.1.2-py3-none-any.whlv0.1.1 — CC-BY 3.0 AU + final dataset scope
First public release with a settled licence + dataset scope.
What ships
7 curated APRA datasets through 6 MCP tools (search_datasets, describe_dataset, get_data, latest, top_n, list_curated):
| ID | Coverage |
|---|---|
ADI_KEY_STATS |
per-bank CET1 / Tier 1 / Total capital + RWA, quarterly since Mar 2013 |
ADI_RISK_WEIGHTED_ASSETS |
per-bank RWA breakdown (credit / operational / market / IRRBB) |
SUPER_FUND_LEVEL |
fund-by-fund member counts, benefits, demographics |
INSURANCE_GENERAL + _HISTORICAL |
paired post/pre-AASB17 general insurance |
LIFE_INSURANCE + _HISTORICAL |
paired post/pre-AASB17 life insurance |
Reliability
- 3-tier URL discovery — live scrape → bundled seed manifest → YAML default. apra.gov.au publishes XLSX at date-versioned paths that change every quarter; the discovery layer scrapes the landing page (with ETag conditional GET → 304 between releases costs zero bytes).
- SQLite cache with corruption self-heal at
~/.apra-mcp/cache.db. - Host pinning — refuses any URL outside
apra.gov.au. - Framework-break metadata on every insurance response (AASB-17 Q3-2023 boundary surfaces in the
frameworkblock).
Attribution
Every response carries:
Source: Australian Prudential Regulation Authority.
Licensed under Creative Commons Attribution 3.0 Australia
(https://creativecommons.org/licenses/by/3.0/au/).
Quality bar
- 229 unit tests + 16 live integration tests = 245 total
- Zero-flake across 10 sequential unit runs
- Live tests verified against real APRA Q4 2025 data
Install
uvx --upgrade apra-mcpClaude Desktop config in examples/.
Deferred to v0.2
ADI_PROPERTY_EXPOSURES + SUPER_AGGREGATE — both are transposed multi-tab industry-aggregate files that need a transposed-layout parser. See CHANGELOG for the rationale.