io.ausdata/asic-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@io.ausdata/asic-mcp Is Jane Smith a registered financial adviser?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
asic-mcp
mcp-name: io.ausdata/asic-mcp
MCP server for Australian Securities and Investments Commission registers. Plain-English access to the Financial Advisers Register, AFS Licensees, AFS Authorised Representatives, Credit Licensees, Banned & Disqualified Persons and Organisations, and Registered Liquidators — every one updated weekly by ASIC and served via data.gov.au.
Hosted access? For cross-source queries, webhooks, an always-on REST API, and a uniform response envelope across all 9 sources, see ausdata.io — free tier available (500 calls/mo, no card).
"Is Jane Smith a registered financial adviser?"
"Find every AFS licensee in NSW with 'Westpac' in the name."
"List all banned persons added since 2024-01-01."
"Who's the registered liquidator for KordaMentha?"
"Which credit licensees were suspended last year?"Sister to abs-mcp (Australian Bureau of Statistics), rba-mcp (Reserve Bank of Australia), ato-mcp (Australian Taxation Office), apra-mcp (Australian Prudential Regulation Authority), aihw-mcp (Australian Institute of Health and Welfare), and au-weather-mcp (Australian weather). All seven together cover the macro / regulator / health / tax / climate layer of Australian official data.
Install
# Run on demand via uvx (recommended)
uvx --upgrade asic-mcp
# Or install permanently
pip install asic-mcpClaude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"asic": { "command": "uvx", "args": ["--upgrade", "asic-mcp"] }
}
}Why
--upgrade?uvx asic-mcp(without the flag) uses whatever wheel is cached and never adopts new PyPI releases on its own.--upgrademakes uvx check PyPI on each launch and pull a newer release if one exists. To verify which version is currently serving you, look at theserver_versionfield on anyDataResponse.
Claude Code / Cursor
claude mcp add asic --command uvx --args -- --upgrade asic-mcpRelated MCP server: AU-BizIntel MCP Server
Auto-updating data
Beyond the wheel-level --upgrade, the server has a second auto-update path inside the data layer: every register snapshot on data.gov.au is reissued each week (some monthly) at a stable resource UUID. asic-mcp resolves that UUID via data.gov.au's CKAN API at fetch time and uses the freshest match. Hard-coded YAML URLs are the safe fallback if CKAN discovery fails. You do not need to wait for a new wheel release to get new weekly data — the 24-hour cache TTL means a fresh snapshot lands within a day. Force-refresh by deleting ~/.asic-mcp/cache.db.
What it exposes
Five tools, all plain-English in, structured out:
Tool | Purpose |
| Fuzzy-search the curated catalogue by keyword |
| List a dataset's filterable dimensions and source URL |
| Query with |
| Most recent observation(s) for a dataset (shortcut) |
| Enumerate the curated dataset IDs |
Every response is the same shape — dataset_id, dataset_name, query, period, unit, row_count, records, source_url, attribution, server_version, stale — across every curated dataset.
Curated datasets (7)
ID | What it is | Cadence | Source slug |
| Every individual on the Financial Advisers Register (~21,000 records, 76 columns) | Weekly |
|
| Every Australian Financial Services Licensee (~6,500 entities) | Weekly |
|
| Every AFS Authorised Representative — appointees under each AFSL | Weekly |
|
| Every Australian Credit Licensee (NCCP-regulated lenders, brokers, BNPL providers) | Weekly |
|
| Persons banned/disqualified from financial services, credit, or managing corporations | Weekly |
|
| Organisations banned/disqualified — companion register to BANNED_PERSONS | Weekly |
|
| Every Registered Liquidator and Official Liquidator (~700 insolvency practitioners) | Weekly |
|
Adding a new dataset is a single YAML drop into src/asic_mcp/data/curated/ — see CONTRIBUTING.md. v0.2 roadmap below adds enforcement statistics, short-position reports, and a streaming-lookup tool for the 373 MB Company Register.
Example queries (paste into Claude)
Cross-source compatibility. The
statefilter on every register accepts canonical state codes ("NSW"), full names ("New South Wales"), case-insensitive variants ("nsw"), ISO 3166-2 ("AU-NSW"), and 4-digit postcodes ("2000"→ NSW). Powered byaus-identity— the same input format works across abs-mcp, ato-mcp, apra-mcp, aihw-mcp, and asic-mcp.
Compliance check: "Confirm whether AFSL 234945 is a current AFS licensee, who the legal name is, and what financial services it's authorised to deal in."
Consumer protection: "Has anyone with the surname 'Smith' been banned by ASIC in the last 5 years? Show the ban type, dates, and the public comment."
Insolvency: "List every Registered Liquidator practising under KordaMentha in NSW and Victoria."
Adviser lookup: "Find financial adviser number 000221137 — current/ceased, licensee, and qualifications."
Credit broker due diligence: "For Australian Credit Licence 219612, give me the licensee name, status, EDR scheme membership, and a summary of the authorisations text."
Each prompt resolves to one get_data (or latest) call. The response includes the source URL and CC-BY 3.0 AU attribution so the agent can cite it back.
Architecture
Same shape as the sister packages — client → cache → parsing → shaping → server:
client.pywrapshttpxwith a SQLite-backed disk cache and an in-flight dedup so a burst oflatest()calls fans into one HTTP request. Sends a polite User-Agent — data.gov.au's CDN blocks the default httpx UA.parsing.pyreads CSV via pandas, with delimiter auto-sniffing because ASIC labels every file ".csv" but ships some as tab-separated (Financial Advisers, AFS Auth Rep, Banned Orgs) and some as comma-separated (AFS Licensee, Credit Licensee, Banned Persons, Liquidator).curated.pyloads dataset specs fromdata/curated/*.yaml— each one declares its dimensions, dimension-value enums, source/download URLs, and CKAN discovery hints.discovery.pyresolves the freshest CKAN resource URL at query time; falls back to the YAML default on any failure.shaping.pytransforms the parsed DataFrame intoDataResponse(records / series / csv). For register data (no measure columns) it emits one Observation per row with all dimensions populated.server.pyis the FastMCP entrypoint — five tools, full input validation with helpful "Try X" hints on error.
Cache lives under ~/.asic-mcp/cache.db. ASIC registers refresh weekly, so the byte cache TTL is 24 hours and the CKAN catalogue cache is 1 hour.
Attribution
Source: Australian Securities and Investments Commission, licensed under Creative Commons Attribution 3.0 Australia (CC BY 3.0 AU). Data accessed via data.gov.au. © Commonwealth of Australia. The MCP server is MIT-licensed; the underlying register data carries the CC-BY 3.0 AU licence, which is echoed verbatim in every response's attribution field.
Sister MCPs (Australian Public Data portfolio)
Want all 9 sources behind one REST API? The hosted gateway at 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).
abs-mcp — Australian Bureau of Statistics (CPI, unemployment, ERP, building approvals)
rba-mcp — Reserve Bank of Australia (cash rate, lending stats, exchange rates)
ato-mcp — Australian Taxation Office (tax stats, ACNC charities)
apra-mcp — Australian Prudential Regulation Authority (banking, insurance, super)
aihw-mcp — Australian Institute of Health and Welfare
asic-mcp — this one. Financial advisers, AFS / credit licensees, banned persons & orgs, liquidators.
aemo-mcp — Australian Energy Market Operator (NEM dispatch, spot prices, generation)
au-weather-mcp — Open-Meteo (Bureau of Meteorology aggregator)
wgea-mcp — Workplace Gender Equality Agency
aus-identity — Postcode / state / ABN normalisation helper used by all sisters
The portfolio is designed to compose: an agent can ask for "current financial adviser in postcode 2000, paired with the AFS licensee's parent firm and the regulator's banning history" and one shot fans out across two or three MCPs.
Roadmap
v0.2:
ASIC_REGISTERED_AUDITOR,ASIC_CREDIT_REPRESENTATIVE,ASIC_SMSF_AUDITOR. Streaming-lookup tool for the 373 MB Company Register (look up by ACN/ABN instead of bulk-loading).v0.3: Insolvency Series 3.x XLSX from asic.gov.au (apra-mcp-style landing-page scrape). Short-position reports (daily CSV).
v0.4: Hosted version with x402 per-call paywall; programmatic SEO pages; MCPay + Apify listings.
CHANGELOG tracks every release.
Development
git clone https://github.com/Bigred97/asic-mcp.git
cd asic-mcp
uv sync --extra dev
uv run pytest # ~229 unit tests
uv run pytest -m live # ~9 live tests against data.gov.auIssues, ideas, and contributions welcome: github.com/Bigred97/asic-mcp/issues.
Available Tools
5 toolsdescribe_datasetA
Describe a dataset's filterable dimensions, returnable measures, and source.
Use this before calling get_data on a new dataset — it tells you the valid filter keys ('current_status', 'state', 'business_name'), the valid filter values ('current', 'ceased', 'nsw', 'vic'), and the source URL.
Returns: DatasetDetail with id, name, description, period_coverage, list of dimensions, list of measures, source_url, and download_url.
Inputs: dataset_id (required). Returns: describe_dataset shape.
get_dataA
Query a curated ASIC register dataset and return matching rows.
Examples: # All currently registered financial advisers in NSW resp = await get_data( "ASIC_FINANCIAL_ADVISERS", filters={"current_status": "current", "state": "nsw"}, )
# AFS licensees whose legal name contains "Macquarie"
resp = await get_data(
"ASIC_AFS_LICENSEE",
filters={"licensee_name": "Macquarie"},
)
# Persons banned or disqualified after 2024
resp = await get_data(
"ASIC_BANNED_PERSONS",
start_period="2024-01-01",
)
# Full authorisation text for one AFS licensee
resp = await get_data(
"ASIC_AFS_LICENSEE",
filters={"licensee_name": "Macquarie Bank Limited"},
include_full_authorisation=True,
)Returns: DataResponse with records (or csv), unit, period bounds, row_count, source URL, and CC-BY 3.0 AU attribution.
Inputs: dataset_id (required), format, filters, end_period, +2 more. Returns: get_data / latest shape — uniform across all curated datasets. `records` carrie…
latestA
Return the most recent observation(s) per measure for a dataset.
For register data, "latest" is the current weekly/monthly snapshot
capped at limit rows (default 50). For time-bounded fields
(date_banned, date_ceased), latest returns the most recent matching
record per entity.
Pass filters to drill into one entity (no truncation hits) or raise
limit to request more rows.
Examples: # Current registered status for one adviser (precise filter, no truncation) resp = await latest( "ASIC_FINANCIAL_ADVISERS", filters={"adviser_number": "1234567"}, )
# First 50 most-recent banned persons (truncated; full count in resp.truncated_at)
resp = await latest("ASIC_BANNED_PERSONS")
# Get 500 rows in one go (still capped, but bigger window)
resp = await latest("ASIC_AFS_LICENSEE", limit=500)
# Full authorisation text for one AFS licensee
resp = await latest(
"ASIC_AFS_LICENSEE",
filters={"licensee_name": "Macquarie Bank Limited"},
include_full_authorisation=True,
)Inputs: dataset_id (required), limit, filters, include_full_authorisation. Returns: get_data / latest shape — uniform across all curated datasets. `records` carrie…
list_curatedA
List every curated dataset ID in this version of asic-mcp.
These are the datasets where get_data accepts plain-English filter keys and returns aliased, well-typed columns. Each ID is documented via describe_dataset.
Returns: Sorted list of dataset IDs.
Inputs: no named parameters. Returns: result
search_datasetsA
Fuzzy-search the curated ASIC dataset catalogue.
The curated set of hand-curated ASIC registers covers Financial Advisers,
AFS Licensees, AFS Authorised Representatives, Credit Licensees,
Credit Representatives, Banned and Disqualified Persons,
Banned and Disqualified Organisations, Registered Liquidators,
Registered Company Auditors, SMSF Auditors, Companies, Business Names,
and Short Positions. Call list_curated() to get the live list rather
than assuming a fixed count — the registry grows over time.
Examples: # Find the financial advisers register results = await search_datasets("financial adviser") # → [{id: 'ASIC_FINANCIAL_ADVISERS', name: 'Financial Advisers Register', ...}]
# Discover what's available on enforcement-related lists
results = await search_datasets("banned")Returns: List of DatasetSummary (id, name, description, update_frequency, is_curated), ranked by relevance.
Inputs: query (required), limit. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 5 tools
get_data and latest both query dataset rows with filters and limit, creating mild overlap; however, latest is clearly scoped to most-recent snapshots while get_data handles general filtering. Other tools are distinct.
Three tools follow verb_noun (search_datasets, describe_dataset, get_data), but list_curated breaks the pattern (verb + adjective, missing 'datasets') and latest is a lone adjective/noun. Mixed conventions overall.
Five tools cover discovery (list, search, describe) and query (get_data, latest) without redundancy or bloat, fitting the focused ASIC dataset access purpose.
The surface supports discovery, metadata inspection, and data retrieval with filtering, pagination, and latest snapshots. No obvious missing CRUD operation or query capability for the domain.
Maintenance
Related MCP Connectors
Search Australian businesses and look up ABN and GST records from the Australian Business Register.
CompanyLens is a remote MCP server giving AI agents instant access to official company registry data across 19 jurisdictions in Europe, the Americas, and Asia-Pacific. Eighteen read-only tools let you search companies and people, look up officers and beneficial owners, map corporate networks through shared directors, screen names against the UK disqualified directors register, find every company at a registered address, and pull filing history — all from a single connector. Visit our website: https://companylens.io
Search, filter, count and sum Australian government open data, with every version kept.
Official UK, US and Australia public datasets as filtered CSV, REST API and MCP for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceVerify Australian and New Zealand businesses against government registers via any MCP-compatible AI agent. Returns registration status, directors, licences, trading names, and a three-tier risk assessment (CLEAR / ADVISORY / FLAGS_FOUND) that surfaces regulatory findings across jurisdictions — including bans, disqualifications, and insolvencies that may not appear in any single register.MIT
- AlicenseNot gradedqualityDmaintenanceGives any MCP-compatible AI agent instant access to the Australian Business Register (ABR) — plus AI-powered business intelligence. Search 8M+ registered Australian entities by name or ABN, get full profiles, check GST status, and get an AI-generated opportunity assessment for any business.38 npmMIT
- AlicenseNot gradedqualityCmaintenanceProvides access to the UK FCA Financial Services Register, enabling firm and individual searches, firm details by FRN, appointed representatives lookups, and individual records by IRN.145 npmMIT
- AlicenseNot gradedqualityBmaintenanceLets any MCP-speaking assistant look up SEC filings and fundamentals, 13F holdings, insider trades, BDC loan books, and U.S. government reference data from Treasury, FRED, FDIC, USAspending, USPTO and CFTC, with the source named on every answer. Most of its 29 tools run keyless against public sources, giving citations-backed answers without an account.134 PyPIMIT