au-eli-mcp
This server provides tools to search and retrieve the current consolidated text of Australian Commonwealth Acts from legislation.gov.au.
au_search_acts: Search for Commonwealth Acts by partial or full title (e.g., "privacy"), returning matching Acts with their FRLI identifiers, durable URLs, and human-readable citations.au_get_text: Fetch the current consolidated full text of a specific Act using its FRLI identifier (e.g.,C2004A00042). Very large Acts are truncated at ~300,000 characters, with atruncatedflag in the response.Verifiable Citations: Every response includes a stable
eli_uri(durablelegislation.gov.auURL), ahuman_readable_citation(Act title), and asource_urlfor independent verification.No API Key Required: Connects directly to the public
legislation.gov.audata source.Audit Logging: All tool calls are logged to a local JSONL file for traceability.
Read-Only: All operations are read-only, idempotent, and non-destructive.
Scope: Acts only — regulations and other legislative instrument types are not currently supported.
Click on "Install 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., "@au-eli-mcpsearch for the Migration Act 1958"
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.
au-eli-mcp
An MCP server for Australia's Federal Register of Legislation (legislation.gov.au), the
official source of Commonwealth legislation. It searches, fetches, and cites Acts, with a
verifiable citation on every response.
Part of the MateMatic eu-legal-mcp production line, extended into Asia-Pacific alongside
jp-eli-mcp, sg-eli-mcp and my-eli-mcp. Same citation contract (a stable identifier + a
human-readable citation + a source URL), adapted for a jurisdiction with no ELI.
Scope. This MVP covers Acts only (
collection(act)); regulations and other legislative instrument types are not yet covered. Discovery is by title (au_search_acts); fetch the current consolidated text withau_get_text(truncated for very large Acts). Every response carries adataset_note.Licence. Federal Register of Legislation content is official public information published by the Australian government. This connector relays it with attribution and a
source_url.
The tools
Tool | What it does |
| Search Commonwealth Acts by (partial) title. |
| The current consolidated text of an Act (truncated at ~300,000 characters). |
| Declare what this connector covers, when each family was captured, and - explicitly - what it does NOT cover. Every gap carries a fallback. |
Every response carries the contract: eli_uri (Australia has no ELI - this is the durable
legislation.gov.au URL keyed on the document's own FRLI identifier, e.g.
https://www.legislation.gov.au/C2004A00042/latest, see eli_note), human_readable_citation
(the Act title), and source_url.
Related MCP server: ris-mcp
Install
Not yet on PyPI - install from source until the first release ships:
git clone https://github.com/matematicsolutions/au-eli-mcp
cd au-eli-mcp
pip install -e .Once released, this will be uvx au-eli-mcp.
Configuration via env:
AU_ELI_BASE_URL- defaulthttps://www.legislation.gov.auAU_ELI_CACHE_DIR- default~/.matematic/cache/au-eliAU_ELI_AUDIT_DIR- default~/.matematic/audit
No API key. legislation.gov.au is keyless.
Configure (Claude Code / any MCP client)
{
"mcpServers": {
"au-eli-mcp": { "command": "au-eli-mcp" }
}
}Windows 11 with Smart App Control
Smart App Control blocks unsigned executables, which covers uvx.exe, pip.exe
and the au-eli-mcp.exe launcher that pip writes at install time. The python.exe and
py.exe from the python.org installer are signed by the Python Software
Foundation, so running the module through the interpreter works:
python -m pip install au-eli-mcp
python -m au_eli_mcppip.exe is blocked for the same reason, so install with python -m pip, not
pip install. If python is not on PATH, use the Windows launcher: py -3 -m au_eli_mcp.
{ "mcpServers": { "au-eli-mcp": { "command": "python", "args": ["-m", "au_eli_mcp"] } } }Do not turn Smart App Control off to work around this - it cannot be re-enabled without reinstalling Windows.
Governance
Public data only - read-only against legislation.gov.au; no client data leaves the machine.
Robots-compliant -
robots.txtallows crawling (only/assets/is disallowed); this connector caches aggressively rather than hitting the site repeatedly.Audit log - every tool call appends one JSON line to
~/.matematic/audit/au-eli-mcp.jsonl.Vendor-neutral - talks only to
legislation.gov.au; no LLM provider, no telemetry.Verifiable citations - every response is independently checkable via
source_url.
See CONSTITUTION.md and DISCOVERY.md.
Tests
pip install -e ".[dev]"
pytest tests/test_instructions_drift.py -v # offline
pytest tests/test_smoke.py -v # hits live legislation.gov.auLicence
Apache-2.0. © Matematic Solutions / Wieslaw Mazur.
Available Tools
3 toolsau_coverageARead-onlyIdempotent
Declare what this connector covers, how it is sourced, and what it does NOT cover.
Call this before telling a user that the law "does not contain" something, and whenever a search comes back empty: the absence may be a gap in this connector rather than in the law. Every gap carries a fallback saying where to look instead.
Returns:
Coverage with families, an as-of note, and a non-empty list of known gaps.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| status | No | |
| families | No | |
| as_of_note | Yes | States what the dates mean, and what they do not promise. |
| known_gaps | No | Never empty. An empty list would mean 'not checked', not 'no gaps'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld/idempotent annotations, the description discloses that gaps are known and carry fallbacks, and it explains the open-world consequence of empty search results. This is valuable behavioral context that the annotations alone would not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loads the core purpose, then adds usage triggers and return details. Every sentence adds information and none repeats schema or annotation data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only tool with an output schema, the description covers what it does, when to call it, what it returns, and how to interpret gaps. Nothing needed for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so parameter-level description is not needed; the rubric baseline of 4 applies. No parameter semantics are missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Declare') and a clear resource ('what this connector covers, how it is sourced, and what it does NOT cover'), and it states the returned type ('Coverage'). This clearly differentiates it from the search and text-retrieval siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit triggers: call before asserting the law 'does not contain' something and whenever a search returns empty, because the absence may be a connector gap. It does not explicitly name alternatives or state when not to use it, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
au_get_textARead-onlyIdempotent
Fetch the current consolidated text of an Act by its FRLI identifier.
| Name | Required | Description | Default |
|---|---|---|---|
| frli_id | Yes | e.g. ``"C2004A00042"``. |
Output Schema
| Name | Required | Description |
|---|---|---|
| title | No | |
| content | No | |
| eli_uri | No | |
| frli_id | Yes | |
| eli_note | No | |
| byte_size | No | |
| truncated | No | |
| source_url | No | |
| dataset_note | No | |
| human_readable_citation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior, so description does not need to repeat safety traits. However, description adds no detail about response format, error handling, or what constitutes 'current consolidated text'. Without annotations, this would score lower.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, no fluff. All necessary information is front-loaded. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, one parameter, and the presence of an output schema (not shown but indicated), the description is sufficient. It could mention the output type explicitly, but the schema covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for the single parameter 'frli_id' with an example. The description does not add further semantic context beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action ('Fetch'), resource ('current consolidated text of an Act'), and identifier type ('FRLI identifier'). Distinguishes from sibling tool 'au_search_acts' which searches acts rather than retrieves text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Does not mention prerequisite of having an FRLI identifier, nor refer to the sibling tool for searching. The description implies usage but provides no explicit context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
au_search_actsARead-onlyIdempotent
Search Commonwealth Acts by (partial) title.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | e.g. ``"privacy"`` or ``"Aboriginal Affairs"``. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | No | |
| query | Yes | |
| dataset_note | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide comprehensive behavioral cues (read-only, idempotent, open-world). The description adds the 'partial' matching nuance but does not go into detail about matching behavior. Given the rich annotations, the description is satisfactory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, front-loaded with the core verb and resource. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with one parameter and existing output schema and annotations, the description is mostly complete. It doesn't specify result ordering or pagination, but these may be covered by the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers the 'title' parameter with examples (100% coverage). The description's mention of 'partial' title adds minimal extra meaning. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches Commonwealth Acts by partial title, using a specific verb and resource. It distinguishes from the sibling tool 'au_get_text', which likely retrieves full text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for finding Acts by title, and the sibling tool name suggests a complementary retrieval function. However, it does not explicitly state when to use this tool versus the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v0.3.3- Added
au_coverage
2 tool updates
v0.1.0- First observed
au_get_text - First observed
au_search_acts
TDQS
Scored across 3 tools
Each tool has a clearly distinct role: searching by title, fetching full text by FRLI identifier, and reporting coverage/gaps. There is no functional overlap between the tools.
The au_ prefix is consistent, and two tools follow the verb_noun pattern (search_acts, get_text). However, au_coverage breaks the pattern by being a bare noun rather than an action-oriented name, creating a minor inconsistency.
Three tools is on the lean side but appropriate for a narrowly scoped legal research connector: search, retrieve, and coverage awareness. The count feels intentional rather than sparse.
The core workflow of searching and retrieving Act text is covered, and the explicit coverage tool acknowledges known gaps with fallbacks. Missing features like browsing all acts or version history are not clearly required for the stated purpose.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
An MCP server that provides congressional transcripts
Japan Law MCP — Japanese national laws & ordinances via the e-Gov Law API.
MCP server for accessing curated awesome list documentation
Related MCP Servers
AlicenseAqualityAmaintenanceMCP server for Vaquill legal research API. Covers US federal + 50-state law (USC, CFR, state legislation, CourtListener case law)257MIT- FlicenseNot gradedqualityDmaintenanceMCP server that exposes Austrian federal law (Bundesrecht) to LLMs, enabling full-text search, paragraph retrieval, historical versions, statute lookup, BGBl lookups, amendment timelines, and citation searches via the public RIS OGD API.-
- AlicenseAqualityAmaintenanceAn MCP server for accessing Turkish legislation (laws, regulations, decrees) via the Adalet Bakanligi API, providing search, full-text retrieval, and structured citations.5Apache 2.0
- AlicenseAqualityAmaintenanceAn MCP server for Singapore Statutes Online (SSO), the official portal for Singapore legislation. It browses, fetches, and cites Acts, with a verifiable citation on every response.43Apache 2.0