Skip to content
Agentmart
Submit a tool

akl-rainfall

Query Auckland Council rainfall gauges and river or stream levels and flows.

Skill by thecolab-ai

IndexedMIT★ 34
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/thecolab-ai-akl-rainfall

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Query Auckland Council rainfall gauges and river or stream levels and flows. Use for Auckland monitoring sites, observed rainfall or water-level time series, and latest rainfall with spatial filters.

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found
Runs as
Python package

Network hosts it talks to 2

  • codeload.github.com · found in install command
  • environmentauckland.org.nz · found in code

Files it touches

  • ~/.claude/skills/akl-rainfall

What's inside

Skill name
akl-rainfall
Description
Query Auckland Council rainfall gauges and river or stream levels and flows. Use for Auckland monitoring sites, observed rainfall or water-level time series, and latest rainfall with spatial filters.
License
MIT
Compatibility
Requires Python 3.10+ and network access for live data
Metadata
thecolab.auth: none · thecolab.pack: nz-public-data · thecolab.risk: low · thecolab.health: healthy · thecolab.writes: false · thecolab.browser: false · thecolab.category: environment · thecolab.cache_ttl: none · thecolab.data_class: public · thecolab.maintainer: @adam91holt · thecolab.skill_type: public-api · thecolab.source_url: https://environmentauckland.org.nz/ · thecolab.access_mode: public-api · thecolab.source_type: official · thecolab.source_owner: Auckland Council · thecolab.last_verified: 2026-10-08 · thecolab.schema_version: 1 · thecolab.allowed_domains: environmentauckland.org.nz
Instructions
104 lines in SKILL.md · view on GitHub

Before installing

  • Ships executable scripts

Files (13)

  • SKILL.md
  • source-notes.md · references/
  • cli.py · scripts/
  • provenance.py · scripts/
  • smoke_test.py · scripts/
  • test_contract.py · scripts/
  • catalogue.json · tests/fixtures/
  • contract.json · tests/fixtures/
  • fixtures.json · tests/fixtures/
  • flow-day.json · tests/fixtures/
  • level-raw.json · tests/fixtures/
  • rainfall-bulk-hour.json · tests/fixtures/
  • rainfall-hour.json · tests/fixtures/

SKILL.md (first lines)

# Auckland rainfall and rivers

Use the stdlib Python CLI in `scripts/cli.py` to query Auckland Council's
Environment Auckland AQUARIUS WebPortal. Site discovery and JSON exports work
without a login, API key, cookies or browser.

## Workflow

1. Find gauges with `sites`, selecting rainfall, river/stream level or flow.
2. Copy the site's `site` identifier into `series` and choose a date window.
3. Use `latest` for each rainfall gauge's most recent non-null increment within
   the last 72 hours. Inspect observation time, age and quality before using it.

```bash
python3 skills/akl-rainfall/scripts/cli.py sites --parameter rainfall --json
python3 skills/akl-rainfall/scripts/cli.py sites --parameter level --bbox '174.8,-37.1,175.0,-36.9' --format geojson --json
python3 skills/akl-rainfall/scripts/cli.py series --site 649940 --parameter rainfall --from 2026-10-07 --to 2026-10-08 --interval hour --json
python3 skills/akl-rainfall/scripts/cli.py series --site 43803 --parameter level --from 2026-10-07 --to 2026-10-08 --json
python3 skills/akl-rainfall/scripts/cli.py series --site 43803 --parameter flow --from 2026-10-07 --to 2026-10-08 --interval day --json
python3 skills/akl-rainfall/scripts/cli.py latest --parameter rainfall --bbox '174.88,-36.99,174.89,-36.97' --json
```

## Commands and output

- `sites [--parameter rainfall|level|flow] [--bbox minLon,minLat,maxLon,maxLat]`
  lists monitoring sites, coordinates and available dataset identifiers. With
  no parameter it returns the union of those three parameters. Includes old
  gauges; inspect `end_of_record` (the Council's advertised record bound).
  bbox filtering is local, inclusive point containment on site coordinates;
  sites without coordinates are excluded. Bounds must strictly increase.
- `series --site ID --parameter rainfall|level|flow --from ISO --to ISO
  [--interval hour|day] [--max-points N]` returns source observations or upstream aggregates.
  Exact site names also work; identifiers avoid ambiguity. Windows are inclusive,
  at most 31 days, and boundaries must have minute precision. A date means midnight.
  Raw output (no `--interval`) has `--max-points` (default and maximum 5,000);
  excess fails with code 2. Set a smaller positive limit to bound output further.
  Use `--interval hour|day` or a shorter window to reduce the output.
- `latest --parameter rainfall [--bbox minLon,minLat,maxLon,maxLat]` returns
  the most recent non-null recorded increment per gauge within 72 hours, with
  `age_hours` and `stale` (over 24 hours). Reports gauges outside the lookback and
  gauges without values separately. This is an increment, not a 24-hour total.

Every command accepts `--json`, returning `{"meta": {...}, "results": [...]}`.
Shared `meta` includes `source_url`, `publisher`, `licence`, `retrieved_at`, and
`latest_data` when published, plus counts, warnings and query details. Errors
return the same `meta`, empty `results`, and `error` with code, type and message.
Spatial commands also accept `--format json|geojson`; either implies machine
output. GeoJSON uses WGS84 longitude, latitude order and top-level `meta`.
Latest gauges retain their individual export `source_url`; other shared
provenance appears once in `meta`. Retrieval times are UTC; data times are
**fixed NZST (UTC+12)** even in summer. Do not interpret naive input as
daylight-saving Auckland time.

Dataset records use `start_of_record`/`end_of_record` for coverage; sites report
`end_of_record`. Series `meta.latest_data` is the advertised end of that dataset's record; it can be
newer than the requested historical window.
Latest metadata reports the newest returned observation. POST `source_url` is
the bare public endpoint; `meta.request`/`meta.catalogue_requests` record its
method and form separately. GET export URLs retain replayable query parameters.

With `--interval`, rainfall is the total over the preceding interval; level/flow
are averages. Aggregate `time` is the interval end. Use `period_start` and
`period_end` for day attribution; days run midnight–midnight NZST (01:00–01:00
NZDT in summer). Retain `grade_code`, `grade_name`, approvals, qualifiers and
interpolation fields. Missing source values (`"NaN"`) become `null`, with
`missing: true` and the original `source_missing_marker`. Never treat them as zero.
An empty valid time window remains an empty result; malformed exports fail.
A window outside the dataset's advertised record includes a metadata warning;
an empty series is not evidence of no rain.

## Limits and attribution

- Data is for the sole use of the recipient. Do not redistribute or republish
  raw extracts without agreement; attribute **Auckland Council** in any output.
  Data may be measured or synthesised and is not for safety decisions. See the
  [portal terms](https://environmentauckland.org.nz/Disclaimer), including indemnity.
  The skill's MIT licence covers its code; no open data licence was found.
- Some stations are operated by ESNZ/NIWA and distributed through the Council
  portal. Check the station owner and its terms before reuse.
- Gauges are provisional and may be old, missing or unverified. These are gauge
  measurements, not street flood depths or official warnings.
- No radar imagery or forecasts. Historical coverage varies. Council says additional
  parameters and historical data can be requested through its contact dashboard.
- Each network call uses a 10-second timeout. Latest downloads use one request per active
  gauge and at most four concurrent requests; one failed request fails the command.
  No credentials, caches or external dependencies are required.

## Resources and checks

See `references/source-notes.md` for verified endpoints, source terms and schema
details. Hand-written synthetic parser fixtures are in `tests/fixtures/`;
`fixtures.json` marks their fictional contents and the source shapes they mirror.

```bash
python3 scripts/validate_skill.py skills/akl-rainfall --strict
python3 skills/akl-rainfall/scripts/test_contract.py
python3 scripts/run_smoke_tests.py akl-rainfall
```

`scripts/test_contract.py` checks synthetic parsers and the shared CLI contract.
`scripts/smoke_test.py` checks fixtures before bounded live sites, rainfall, level,
flow and latest probes. Network outages are skips; parser failures are failures.

From thecolab-ai/.skills, MIT.

More from thecolab-ai/.skills

Signals

Stars
34
Forks
7
Open issues
10
Last commit (this folder)
Oct 8, 2026 (20 days ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from thecolab-ai

Cite this page

akl-rainfall skill. Agent Mart. https://agentmart.dev/skills/thecolab-ai-akl-rainfall (last updated 2026-10-24)