🇳🇿 New Zealand — New Zealand Companies Office (Ministry of Business, Innovation & Employment)
Access New Zealand's official company register in real time via the OpenRegistry MCP endpoint. Unified schema, source-linked, live passthrough (no caching).
Data license: Crown copyright, reuse under New Zealand Government Open Access and Licensing (NZGOAL)
Real-time: yes — every call hits upstream
Caching notes: All caches: 10 seconds (de-duplicates rapid repeated calls within a single AI turn; otherwise always fresh). Pass fresh=true to bypass even the 10s cache.
NZ Companies Office public JSON + HTML tabs (no auth). Accepts 5–8 digit company number or 13-digit NZBN. Share register is public; full director list only via HTML tab.
Company ID format
NZ Companies Office company number (numeric, typically 5–8 digits, e.g. 1157956). 13-digit NZBN (e.g. 9429036794195) also accepted — auto-resolves to company number via entity search.
Examples: 1157956, 1166320, 9429036748471
Supported tools (9)
search_companies
get_company_profile
get_officers
get_shareholders
list_filings
get_officer_appointments
search_officers
get_document_metadata
fetch_document
Status values
Native values upstream reports: Registered, In Liquidation, In Receivership, In Voluntary Administration, Removal Proposed, Removed, Reconstituted
Mapping to the unified four-value enum:
Unified
Native values
active
Registered
inactive
In Liquidation, In Receivership, In Voluntary Administration, Removal Proposed
dissolved
Removed, Reconstituted
unknown
(none)
Known quirks
id_formatinfo — company_id accepts a numeric company number (typically 5–8 digits) or a 13-digit NZBN (starts with 9429). NZBN auto-resolves to the company number via entity search.
searchinfo — search_companies supports AU-style filter prefixes inside the query string: type:LTD, status:REGISTERED, incorp_from:YYYY-MM-DD, incorp_to:YYYY-MM-DD, address:"free text", address_type:REGISTERED|PPOB|AFS|POSTAL. Unrecognised tokens fall back to free-text search.
officerswarning — get_officers parses the public /companies/{id}/directors HTML tab to get the full board (current + former when include_resigned=true). The /entity/{id}/summary JSON truncates directors[] to the 2 most recent appointments — unreliable for any company with a real board.
officerswarning — officer_id is NOT a stable cross-company person identifier. Upstream returns null for every `identifier` in role-search responses. Callers must correlate by name + appointment set, not by officer_id. search_officers synthesizes a name-based placeholder ID that must not be treated as durable.
officerswarning — get_officer_appointments only accepts a plain name string. A pure-numeric input (e.g. director identifier from /summary) returns 400 — NZ has no by-id reverse lookup.
shareholdersinfo — get_shareholders returns a public share register (Companies Act 1993 s.88-92). For companies flagged 'Extensive Shareholding' (typically listed issuers, large cooperatives), only the largest parcels are on the register — the full list must be requested from the company directly.
filingsinfo — list_filings uses upstream start/limit pagination (cursor maps to start offset). Default limit 100, max 200. Upstream `count` is the true total regardless of slice. Documents are per-attachment; the first attachment with a drmKey becomes document_id.
documentsinfo — document_id format is '{drmKey}|{filename}' where drmKey is a 32-char hex string. Downloads require no auth. Dynamically-generated extracts (companyExtract / annualReturnExtract / incorporationCertificate) stream without Content-Length — get_document_metadata has to drain the stream to report the true size.
pscblocker — get_persons_with_significant_control returns 501. NZ has no public beneficial-ownership register (legislation pending). Use get_shareholders for the public share register instead.
chargesblocker — get_charges returns 501. Charges/security interests live in the separate Personal Property Securities Register (PPSR) which is pay-per-search and not exposed here.
Available jurisdiction_data fields
Every tool response carries a jurisdiction_data object with the raw upstream fields (names unchanged). The full field set per record type: