---
title: For agents
resource: https://publicdata.au/agents/
---

# For agents

Everything here is meant to be read by a program first. There are no keys, no accounts, no rate limits and no JavaScript needed for any data file.

## Start with one of these

- [`/llms.txt`](https://publicdata.au/llms.txt) lists every dataset with its latest download URLs. [`/llms-full.txt`](https://publicdata.au/llms-full.txt) adds the field list for each.
- [`/.well-known/ard.json`](https://publicdata.au/.well-known/ard.json) is the Agentic Resource Discovery manifest, with a display name and representative queries per dataset. The same document is at `/.well-known/ai-catalog.json`.
- [`/catalog.json`](https://publicdata.au/catalog.json) is a DCAT catalogue in JSON-LD, one record per live dataset with a distribution per format.
- [`/openapi.json`](https://publicdata.au/openapi.json) is an OpenAPI 3.1 document for every public path, with the dataset slugs as an enum. Load it into any client generator or an agent's tool list.
- [`/backlog.json`](https://publicdata.au/backlog.json) is every register entry with its status, licence and the reason if it is blocked. `/api/votes` has the current vote counts.

## Every page has a Markdown twin

Add `index.md` to any page URL, or follow the `rel="alternate" type="text/markdown"` link in its head. The twin has the same facts as the page in plain Markdown with front matter.

## Per dataset

- `/d/<slug>/datapackage.json` is a Frictionless data package pointing at the latest version.
- `/d/<slug>/schema.json` is a Table Schema. Types are string, integer, number, boolean, date and datetime.
- `/d/<slug>/versions.json` lists every version with its date, row count, source hash and URL.
- `/d/<slug>/changes.json` summarises each consecutive diff. `/d/<slug>/diff/<a>..<b>.json` compares any two versions by key.
- `/d/<slug>/latest/data.<format>` redirects with a 302 to the newest dated version. Follow redirects.
- `/d/<slug>/v/<date>/data.<format>` never changes and is cached for a year.
- `/d/<slug>/v/<date>/by/<field>/<value>.json` is a smaller file for one value of a partition field. `by/<field>/index.json` lists them.

## Inside every data file

JSON, NDJSON, GeoJSON, Parquet and SQLite each carry a `publicdata` header with the publisher, licence, attribution string, version, source URL and source SHA-256. Use the attribution string when you show the data to a person. The CSV has no room for a header, so read `manifest.json` beside it.

## In the browser

Pages register WebMCP tools through `navigator.modelContext` when the browser exposes it: `search_datasets`, `get_dataset`, `list_partitions`, `query_rows`, `count_rows`, `diff_versions` and `vote`. The two row tools read a partition file in the browser and filter or group it, so an agent can answer a question about the data without leaving the page. The search form and the backlog form carry declarative WebMCP annotations as well. Without any of it, the URLs above do the same work.

## Robots

[`/robots.txt`](https://publicdata.au/robots.txt) allows every crawler, including AI crawlers, everywhere except `/api/`. [`/sitemap.xml`](https://publicdata.au/sitemap.xml) lists every page.
