# BuilderVet: NSW and QLD builder licence and risk history

> BuilderVet: is this NSW or QLD builder licensed, insolvent or disciplined? 290k+ official records.

- name: io.github.jackfieldman/buildercheck
- version: 0.1.5
- connection class: R0 (autonomous)
- trust: 97/100
- quality: 74/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.jackfieldman%2Fbuildercheck
- tools: https://api.protogrid.dev/v1/servers/io.github.jackfieldman%2Fbuildercheck/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "buildercheck": {
      "type": "http",
      "url": "https://mcp.buildervet.au/"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 99
- freshness: 100
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-97% +updated-0d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 74/100 (needs work)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 86 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 5 of 5 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_builder_risk (idempotentHint); search_builders (idempotentHint); get_builder_timeline (idempotentHint); …
- pass `tools.token_cost`: about 710 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 50 (weight 15)

- pass `stability.changes`: 5 tool changes in 30 days
- fail `stability.rug_pull`: 3 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 5, about 710 tokens to load them all
- tool set hash: 1d393c7a4c4a9859045dad9ad71ca1ff
- tools last changed: 2026-10-09T03:49:38.811Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.jackfieldman/buildercheck.svg)](https://protogrid.dev/servers/io.github.jackfieldman/buildercheck)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-09 `get_builder_changes` added
  - Page the public dated event timeline, newest event date first. This is recorded history, not private monitoring notifications or a since-last-run feed. Default 25, maximum 100 events. Pass nextCursor unchanged; restart without a cursor if the timeline changed. Public API response is capped at 500 rows.
- 2026-10-09 `get_builder_coverage` added
  - Read public per-source check states, result details, last attempt/success dates, next due dates and source URLs. This reads recorded state; it does not rerun checks or enable monitoring. Unchecked, stale and unavailable are gaps, not clear results.
- 2026-10-09 `get_builder_timeline` changed (description, inputSchema, annotations) **meaning changed**
  - before: Get the dated event timeline for a builder by slug: licence status changes, deregistration/strike-off, disciplinary findings, public warnings, and building work rectification orders. Each event carries its severity (info/watch/risk), the official register it came from, and whether the source is archived. A removal notice is not a new finding or proof of wrongdoing. Do not imply exclusive access. Returns up to 50 most recent events. Example: slug='acme-building-pty-ltd-1a2b' → '2026-03-14 — [risk] Building work rectification order (nsw.bc.rectification-orders)'.
  - after: Read the first 50 public timeline events, newest event date first. Each event retains its source, occurrence/detection dates and archive flag. Use get_builder_changes to page further; the public API holds at most 500 timeline rows in this response.
- 2026-10-09 `get_builder_risk` changed (description, inputSchema, annotations) **meaning changed**
  - before: Get the factual risk profile for one builder by slug: NSW licence number/class/status (current, expired, suspended, cancelled), ACN/ABN and ASIC registration status (incl. deregistration/strike-off), total timeline event count (not disciplinary finding count), and recorded source flags such as disciplinary history or licence problems. All facts come from official public registers, archived longitudinally by BuilderVet. Use for identity and dated evidence. This does not establish safety, financial health or complete coverage. Example: slug='acme-building-pty-ltd-1a2b' (get the slug from search_builders first).
  - after: Read one builder's public identity, licences, company status and stored source flags. Facts only: flags are not a safety rating, and missing records are not a clearance. Use get_builder_coverage for check dates and gaps.
- 2026-10-09 `search_builders` changed (description, inputSchema, annotations) **meaning changed**
  - before: Search Australian (currently NSW) builders, contractors and building companies by name; optionally filter by postcode. Returns matching entities with their licence status and a slug to pass to get_builder_risk / get_builder_timeline. Example: query='Acme Building' → '- Acme Building Pty Ltd (Current), 2099 → slug: acme-building-pty-ltd-1a2b'. Names are matched loosely, so try the trading name AND the legal (Pty Ltd) name if the first search misses. Query must be at least 2 characters.
  - after: Find NSW builders by name, ABN, ACN or licence number, optionally within a postcode. Resolve the legal entity before reading its record. Try the legal company name if a trading name misses.

Full history: https://api.protogrid.dev/v1/servers/io.github.jackfieldman%2Fbuildercheck/changes

## Remotes

- https://mcp.buildervet.au/ (streamable-http, auth none, reachable true, uptime30d 0.9741379)

## Packages

_none_

## Tools (5)

- `get_builder_changes`: Page the public dated event timeline, newest event date first. This is recorded history, not private monitoring notifications or a since-last-run feed. Default 25, maximum 100 events. Pass nextCursor unchanged; restart without a cursor if the timeline changed. Public API response is capped at 500 rows.
- `get_builder_coverage`: Read public per-source check states, result details, last attempt/success dates, next due dates and source URLs. This reads recorded state; it does not rerun checks or enable monitoring. Unchecked, stale and unavailable are gaps, not clear results.
- `get_builder_risk`: Read one builder's public identity, licences, company status and stored source flags. Facts only: flags are not a safety rating, and missing records are not a clearance. Use get_builder_coverage for check dates and gaps.
- `get_builder_timeline`: Read the first 50 public timeline events, newest event date first. Each event retains its source, occurrence/detection dates and archive flag. Use get_builder_changes to page further; the public API holds at most 500 timeline rows in this response.
- `search_builders`: Find NSW builders by name, ABN, ACN or licence number, optionally within a postcode. Resolve the legal entity before reading its record. Try the legal company name if a trading name misses.
