Skip to main content
Glama
matematicsolutions

au-eli-mcp

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 with au_get_text (truncated for very large Acts). Every response carries a dataset_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

au_search_acts

Search Commonwealth Acts by (partial) title.

au_get_text

The current consolidated text of an Act (truncated at ~300,000 characters).

au_coverage

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 - default https://www.legislation.gov.au

  • AU_ELI_CACHE_DIR - default ~/.matematic/cache/au-eli

  • AU_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_mcp

pip.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.txt allows 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.au

Licence

Apache-2.0. © Matematic Solutions / Wieslaw Mazur.

Available Tools

3 tools
au_coverageA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusNo
familiesNo
as_of_noteYesStates what the dates mean, and what they do not promise.
known_gapsNoNever empty. An empty list would mean 'not checked', not 'no gaps'.

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_textA
Read-onlyIdempotent

Fetch the current consolidated text of an Act by its FRLI identifier.

ParametersJSON Schema
NameRequiredDescriptionDefault
frli_idYese.g. ``"C2004A00042"``.

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleNo
contentNo
eli_uriNo
frli_idYes
eli_noteNo
byte_sizeNo
truncatedNo
source_urlNo
dataset_noteNo
human_readable_citationNo

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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_actsA
Read-onlyIdempotent

Search Commonwealth Acts by (partial) title.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYese.g. ``"privacy"`` or ``"Aboriginal Affairs"``.

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsNo
queryYes
dataset_noteNo

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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. 1 tool updatev0.3.3
    • Addedau_coverage
  2. 2 tool updatesv0.1.0
    • First observedau_get_text
    • First observedau_search_acts

TDQS

A4/5.0

Scored across 3 tools

Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count4/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

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

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP 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.
    -
  • A
    license
    A
    quality
    A
    maintenance
    An MCP server for accessing Turkish legislation (laws, regulations, decrees) via the Adalet Bakanligi API, providing search, full-text retrieval, and structured citations.
    5
    Apache 2.0
  • A
    license
    A
    quality
    A
    maintenance
    An 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.
    4
    3
    Apache 2.0