floodwise

England flood-risk by postcode for AI agents.

Ask an LLM "what's the flood risk at this postcode?" and it answers confidently — but it cannot know: per-postcode flood risk lives in a government dataset, not a model's memory. floodwise looks it up in the Environment Agency's official data and returns the real long-term risk band, or an honest "not found". "Qiniso" means "truth" in Zulu.

Read this first. floodwise covers England only (Environment Agency data — not Wales/Scotland/NI). The risk is area-level, not property-level, and reflects long-term risk, not a live flood warning. It is not insurance, underwriting, surveying or professional advice.

Why it exists

Long-term flood risk for a specific postcode is exact, curated, quarterly-changing reference data — exactly what a language model cannot recall. Asked anyway, it will pattern-match a plausible "low risk" or "high risk" and state it with full confidence. For a home-insurance triage, an onboarding check, or a property question, a silently invented risk level is a real problem. floodwise returns the Environment Agency's official indication by lookup, or an honest "not found".

4risk bands (High / Medium / Low / Very Low) for the area around a postcode, from official EA data.
OGLopen data — Environment Agency "Flood risk: postcode search tool", refreshed ~quarterly.
0guesses — out-of-coverage or unknown postcodes return an honest "not found", never a fabricated risk.

Tools

flood_risk_by_postcode

The EA long-term flood-risk band for an England postcode, address counts per band, and a separate groundwater indication. Honest "not found" outside England.

validate_postcode

Deterministic UK postcode format check + outcode/incode split. No lookup.

Use it

As a library:

npm i floodwise

import { floodRiskByPostcode, validatePostcode } from "floodwise";

floodRiskByPostcode("SW1A 1AA").headlineRisk;  // "Very Low"
floodRiskByPostcode("EH1 1AA").found;          // false — Scotland, out of EA coverage (no guess)
validatePostcode("ec1a1bb").outcode;           // "EC1A"

Add it to Claude

Runs locally over stdio — no key, no login. Add this under mcpServers in your client config and restart:

{
  "mcpServers": {
    "floodwise": { "command": "npx", "args": ["-y", "floodwise"] }
  }
}

A hosted edge endpoint is planned; the full England dataset is moved to Cloudflare D1 first (the bundle is too large for an in-Worker dataset).

What it is not

floodwise reports the Environment Agency's long-term, area-level flood-risk indication for England postcodes. It is not insurance, underwriting, surveying or professional advice; not a property-level survey; not a live flood warning; and not Wales/Scotland/NI. It excludes flooding from highway drains, sewers and overland flow. Unknown or out-of-coverage postcodes return an honest "not found" — never a fabricated risk level.