GovWait
# GovWait
[GovWait](https://govwait.com/) records processing and wait times published by
government agencies, with a source URL, an honest date and append-only history.
It currently covers immigration, visa, permit, sponsorship, resettlement and
passport routes from Canada, the United Kingdom, New Zealand and Norway.
GovWait is independent and is not affiliated with any government. It does not
create case-specific estimates or provide legal or immigration advice.
## Use the public dataset
- [Dataset hub and CSV downloads](https://govwait.com/data/)
- [Latest retained routes CSV](https://govwait.com/api/v1/downloads/latest.csv)
- [Append-only history CSV](https://govwait.com/api/v1/downloads/history.csv)
- [IRCC forward-looking CSV](https://govwait.com/api/v1/downloads/forward-looking.csv)
- [Source register CSV](https://govwait.com/api/v1/downloads/sources.csv)
- [Dataset metadata](https://govwait.com/api/v1/dataset.json)
- [JSON API documentation](https://govwait.com/api-docs/)
- [OpenAPI 3.1 specification](https://govwait.com/api/v1/openapi.yaml)
- [Processing-time change reports](https://govwait.com/reports/) and [RSS feed](https://govwait.com/reports/feed.xml)
- [Machine-readable site guide](https://govwait.com/llms.txt)
Example:
```sh
curl https://govwait.com/api/v1/entities/ca-visitor-visa--in.json
```
## Why the history matters
Government pages commonly replace an earlier processing-time value with the
current one. GovWait stores a new observation when a published value changes
and preserves the earlier record. It also keeps different measure types—such as
backward-looking statistics, forward projections, service standards and
percentiles—explicitly separate.
Current publication status, source dates and retrieval timestamps remain
distinct. A successful build or search-engine submission is not presented as
proof of indexing, traffic, demand or revenue.
Norway UDI collection is explicitly marked `source_unavailable` from
2026-09-04 after its robots endpoint began returning HTTP 403. The 19 prior UDI
records remain append-only and carry their last successful verification; GovWait
does not bypass the restriction or advance their freshness timestamps.
## Repository map
- `pipeline/` — polite source collectors, validation, export and static API generation
- `data/exports/` — versioned latest, history, projection and summary exports
- `site/` — static Astro website and discoverability audit
- `machine/openapi.yaml` — public API contract
- `machine/mcp-server/` — local stdio MCP server for AI tools
- `docs/` — architecture, QA, discoverability and operating notes
- `handoff/` — product research, project state and roadmap
## Local verification
The cached pipeline path makes no network request:
```sh
node pipeline/run.js
node pipeline/build-api.js
cp machine/openapi.yaml site/public/api/v1/openapi.yaml
cd site
npm ci
npm run build
npm run audit:seo
```
MCP server:
```sh
cd machine/mcp-server
npm ci
npm run build
npm run smoke
```
The MCP build deterministically bundles the three validated exports plus a
SHA-256 provenance manifest into the package. `npm run verify` builds it, runs
the protocol smoke suite, enforces the exact package allow-list, and exercises
the packed artifact in a clean temporary runtime. The verified public release
is [`govwait-mcp@0.1.2`](https://www.npmjs.com/package/govwait-mcp/v/0.1.2).
Its package policy requires interactive 2FA and disallows token publishing. Its
[official MCP Registry listing](https://registry.modelcontextprotocol.io/v0.1/servers/io.github.artwisdom%2Fgovwait/versions/0.1.2)
is active and latest for version `0.1.2`; versions `0.1.1` and `0.1.0` remain
active in Registry history.
Version `0.1.2` preserves the exact 0.1.1 runtime, bundled dataset and four-tool
behavior while correcting the packaged install documentation and release
metadata. Norway's retained UDI values remain dated `last_verified_value`
fields, never current values. Building or verifying the package locally does
not publish another npm, MCP Registry or directory release.
## Collection safeguards
- Official primary sources only; values and provenance, not copied pages.
- Honest bot identity with a contact address.
- `robots.txt` is checked and a blocked or ambiguous source fails closed.
- At least three seconds between requests to the same host, with caching and
per-host caps.
- No browser impersonation or WAF bypass.
- Append-only history and blocking validation floors.
- Explicit retained-source states when a collector must close, with no fabricated
retrieval or verification dates.
- No personal application data.
See [the methodology](https://govwait.com/about/) and
[`MAINTENANCE_RUNBOOK.md`](MAINTENANCE_RUNBOOK.md) before changing collection or
history behavior.
## Reuse and licensing
GovWait's original organization, field definitions and explanatory metadata are
available under CC BY 4.0 where GovWait owns the rights. Underlying government
information is not relicensed by GovWait; preserve the originating agency's
attribution and follow its source-specific terms. Read the full
[data reuse and licensing notice](https://govwait.com/data-license/).
GovWait-owned software code is licensed under the Apache License 2.0 terms in
[`LICENSE`](LICENSE), subject to the explicit code-only boundary in
[`SOFTWARE-SCOPE.md`](SOFTWARE-SCOPE.md). That scope expressly excludes
government-source data, generated datasets, editorial/research/handoff content,
government marks and other third-party material. The separate data notice and
any file-specific terms continue to control those materials; see
[`docs/MCP_RELEASE_RISK_ASSESSMENT.md`](docs/MCP_RELEASE_RISK_ASSESSMENT.md).
Questions and corrections: [contact@govwait.com](mailto:contact@govwait.com).
TDQS
Scored across 4 tools
search_entities and compare_values have clearly distinct roles (free-text discovery vs. cross-country comparison). However, get_entity and get_latest_value overlap: both return the latest retained processing-time record, differing mainly in that get_entity adds full history and cohort estimates. The descriptions do clarify this, but an agent could still misselect between them.
All four tools follow a clean snake_case verb_noun convention: get_entity, get_latest_value, compare_values, search_entities. The verbs (get, compare, search) are predictable and consistently used.
Four tools is a lean but sensible scope for a focused read-only processing-time lookup service. It is on the thin side—no bulk/list-all operation—but each tool earns its place.
The surface covers the core read-only lifecycle: discovery (search_entities), single-record retrieval (get_entity, get_latest_value), and comparison (compare_values). As a data-browsing service no create/update is expected; only minor gaps like bulk retrieval or listing all sources remain.