v1.9.0 - Legible ABS payloads and leaner responses #57
AnthonyPuggs
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
v1.9.0 - Legible ABS payloads and leaner responses
This release implements the four High-priority findings from the 11 June code review,
all aimed at what the LLM consumer actually receives: ABS payloads a model can read
without a second lookup, responses that stop repeating themselves, and an MCP server
card that reports the full surface.
✨ ABS responses now carry labels, not codes
ABS data is now requested with
format=csvfilewithlabels, so every retrieval returnshuman-readable labels instead of bare SDMX codes:
1 / 10001 / 10 / 50 / QIndex numbers / All groups CPI / Original / Australia / QuarterlyunitINIndex NumbersfrequencyQQuarterlyREGIONdimension{"code": "50", "label": "50"}{"code": "50", "label": "Australia"}base_period25Sep 2025 = 100.0ABS metadata also gains a
titlefield (e.g."Consumer Price Index (CPI)"),matching what RBA payloads already provided.
The labelled layout pairs every code column with an adjacent label column and replaces
DATAFLOWwithSTRUCTURE/STRUCTURE_ID/STRUCTURE_NAME— verified against the liveAPI. The parser detects the paired-column layout automatically and still parses the
legacy code-only layout unchanged, with dual-format fixtures proving both paths.
series_idis unaffected — it is still built from dimension codes, so existingseries references keep working.
📉 Per-observation
dimensionsare gone by defaultEvery observation used to repeat the full dimension dict already present on its series
descriptor — measured at ~3.5× payload inflation on the most common ABS calls, and it
would have grown further once labels landed. Observations are now slim by default:
{ "date": "2025-Q3", "series_id": "MEASURE=1|INDEX=10001|TSEST=10|REGION=50|FREQ=Q", "value": 141.1 }series_id.include_observation_dimensions=truetoget_abs_data,get_rba_table,get_apra_data, orget_economic_seriesto restore the per-observation dicts —served from the same cache, no refetch.
dimensionsas required on observations; theproperty stays defined for the opt-in case.
🛠 The server card now reports the full surface
/.well-known/mcp/server-card.jsonpreviously hard-coded"resources": []and"prompts": []. It now enumerates everything the server registers:ausecon://catalogue,ausecon://conceptsausecon://apra/{publication_id}, which now exposes curated APRA catalogueentries like its ABS and RBA counterparts
🧹 Housekeeping
* 2.py) and added arepository-hygiene test that rejects the pattern so it cannot recur.
server.jsonand the docs with the actual release history.frequencyis now"Quarterly"rather than
"Q",unitis"Index Numbers"rather than"IN", and dimensionlabels are human-readable. Consumers matching on short codes should use
dimensions[*].code(unchanged) instead.dimensionskey unless explicitly requested.include_observation_dimensionsparameter is additive and defaults to
false.series_idconstruction andchronological observation ordering are unchanged.
🧪 Verification
tests, server-card enumeration tests, and schema validation for both observation shapes.
csvfilewithlabelscaptures.CPI retrieval end-to-end.
Full changelog: v1.8.0...v1.9.0
This discussion was created from the release v1.9.0 - Legible ABS payloads and leaner responses.
Beta Was this translation helpful? Give feedback.
All reactions