For agents and humans
ANZSCO Work Types — for agents
A machine-readable engine over all 1,256 ACC Work Type Detail Sheets —
built so an AI agent can query structured occupational evidence without
re-reasoning over the free-text entry requirements.
Every record carries a pre-computed entry_signal: a reviewed categorical
summary of what that work type requires to enter (barrier height, licence gate,
next-day-ready flag). Agent consumption is a first-class path; the search tool is for humans.
Values within /api/v1/ are additive-only: new enum values may be added,
but existing values are never renamed or removed within v1.
Treat any unrecognised value as unknown and fail safe.
The valid domains are returned in every response under enums — validate at runtime, not at deploy time.
Canonical contract: /llms.txt.
Get started in under 60 seconds
Copy-paste this curl — it works now, no key required:
curl "https://anzscoworktypes.co.nz/api/v1/worktypes?q=nurse&limit=1"
Response (trimmed to one result, entry_signal highlighted):
{
"query": { "q": "nurse", "anzsco": null, "demand": null, "limit": 1, "offset": 0 },
"total": 1256,
"matched": 17,
"results": [
{
"title": "Enrolled Nurse",
"anzsco_code": "411411",
"acc_sheet_id": 314,
"anchor_id": "enrolled-nurse-411411",
"physical_demand": "Medium",
"entry_requirements": "Completion of an accredited enrolled nursing programme...",
"entry_signal": {
"barrier": "qualification",
"licence_or_registration": "required",
"next_day_ready": false,
"anzsco_skill_level": 2,
"confidence": 0.9,
"source": "verify",
"needs_review": false,
"rationale": "Enrolled nursing requires completion of an accredited programme and registration with the NCNZ."
}
}
],
"enums": {
"barrier": ["none","short_course_or_licence","experience_or_training","qualification","unknown"],
"licence_or_registration": ["required","may_be_required","none"],
"source": ["classify","verify","fallback"]
}
}The entry_signal contract
entry_signal describes the job, never whether a specific client meets it.
Full enum definitions and stability guarantees live in
/llms.txt (the canonical contract — never restate enum values from this page, they drift).
barrier: "unknown" is NOT "none" — it means "no signal", not "no barrier".
Treat it as do-not-assert and read entry_requirements.
next_day_ready is a reviewed judgment — read it, never re-derive it.
The default formula (barrier ∈ {'none, experience_or_training'} AND licence ≠ required)
is deliberately overridden on 26+ sheets where prose demands a different answer.
A source: "fallback" row has no real signal yet — treat like unknown.
Full contract → /llms.txt (canonical).
Worked recipe — reports-wrapper pattern
A report-writing agent queries by ANZSCO code, not title, to get the exact sheet(s).
One ANZSCO code can map to multiple sheets — each has its own entry_signal keyed by acc_sheet_id.
# 1. Query by ANZSCO code
curl "https://anzscoworktypes.co.nz/api/v1/worktypes?anzsco=411411"
# 2. Expect N sheets, each with its own entry_signal.
# Do NOT assume one signal per code.
# 3. Gate on needs_review before asserting in a report:
for sheet in response["results"]:
sig = sheet["entry_signal"]
if sig["barrier"] == "unknown" or sig["needs_review"]:
# Uncertain — flag for human review, do not assert
continue
# Safe to use sig["barrier"], sig["next_day_ready"], sig["licence_or_registration"]
# 4. Validate enums at runtime:
known_barriers = set(response["enums"]["barrier"])
if sig["barrier"] not in known_barriers:
sig["barrier"] = "unknown" # treat unrecognised as unknown, fail safeLive playground
Type a query — results come from the live /api/v1/worktypes endpoint.
The card below shows the human gloss of entry_signal;
the raw JSON is what your agent receives.
Full parameter reference: /llms.txt.
Returns up to 3 results. Debounced — results update as you type.
Loading example…
MCP server
The public, read-only MCP endpoint is live at https://anzscoworktypes.co.nz/mcp.
It exposes search_worktypes, get_worktype and list_demand_levels;
see /llms.txt for the transport and tool contract.
Questions or integration issues: josh.wilks111@gmail.com. API contract issues: open a GitHub issue.