{
  "markdown": "# Agentic House Search\n\n**Enter a UK postcode, get what government open data actually says about that\nneighbourhood.** Demographics, crime, deprivation, prices, fibre, 5G, noise,\ntransport, amenities, schools and planning constraints, assembled live from the\npublishers' own APIs.\n\nThree ways in, all free and open:\n\n| | |\n| --- | --- |\n| **[Postcode report](https://agentic-house-search.vercel.app/report.html)** | The website. Type a postcode, read the answer. |\n| **[MCP server](mcp/README.md)** | Paste one URL into Claude, ChatGPT or any MCP client and your agent can do the same. [Connect an agent →](https://agentic-house-search.vercel.app/connect.html) |\n| **[Dataset registry](https://agentic-house-search.vercel.app/registry.html)** | The 45 open datasets underneath, with endpoints, licences and coverage. |\n\n## Why this exists\n\nUK property intelligence sites (CrystalRoof, PropertyData and others) are\nlargely assembled from public data. This project maps out that raw material, the\nOpen Government Licence datasets and free APIs underneath, and then shows what\nyou can build with it: a working report, and an agent-ready interface to the\nsame thing.\n\nTwo rules it holds itself to, which is most of the point:\n\n1. **It never invents a comparison.** Every band word (\"above the UK average\")\n   comes from a threshold table and always sits next to the figure it describes.\n2. **It never pretends to cover ground it does not.** A Scottish postcode is\n   told that `data.police.uk` excludes Scotland, with a link to Police Scotland,\n   rather than being shown a zero. Deprivation is computed against each nation's\n   own index and denominator.\n\n## Contents\n\n| File | Description |\n| --- | --- |\n| [`data/registry.json`](data/registry.json) | Canonical machine-readable registry |\n| [`data/registry.csv`](data/registry.csv) | Flat table for spreadsheets (generated) |\n| [`index.html`](index.html) | Landing page — what this is, the figures, the category index |\n| [`registry.html`](registry.html) | Searchable catalogue of every entry |\n| [`report.html`](report.html) | Postcode report — pulls live values out of these sources for one postcode |\n| [`js/`](js) | The provider layer: one module per category, plus the thresholds and coverage gates. Shared by the website and the MCP server. |\n| [`mcp/`](mcp/README.md) | MCP server, published as [`agentic-house-search`](https://www.npmjs.com/package/agentic-house-search) |\n| [`packs/`](tools/packbuild/README.md) | Pre-built extracts for the sources that publish bulk files instead of an API |\n| [`tools/`](tools) | `gen_derived.py` (regenerates the CSV and the README tables), `validate_registry.py`, `check_provider_ids.py`, `packbuild/` |\n\nBoth pages fetch `data/registry.json` at runtime, so they need to be served over\nHTTP rather than opened from disk: `python3 -m http.server 8000`, then\n<http://localhost:8000/>.\n\n## Postcode report\n\n[`report.html`](report.html) is the registry pointed at a single postcode: enter\none and it fetches the real values out of these sources and writes a plain\nparagraph per category — who lives here, crime, deprivation, prices, fibre, 5G,\nnoise, transport, amenities, schools, planning constraints.\n\nIt runs entirely in the browser. Most sources are called directly (postcodes.io,\ndata.police.uk, Nomis, HM Land Registry, Planning Data, the Environment Agency,\nTfL, Overpass); the three that publish bulk files instead of an API — Ofcom\nfibre, Ofcom mobile, the DfE school register — are pre-joined into `packs/` by\n[`tools/packbuild`](tools/packbuild/README.md).\n\nResults open with a tile per category — the headline figure and how it rates —\nthen one card each with the numbers behind it. Ratings are colour-coded, but\nnever by colour alone: each carries a glyph (▲ good, ● typical, ◆ worth a look,\n▼ needs attention) and the band in words, so the meaning survives greyscale,\nprinting and colour blindness. Categories that cannot be judged good or bad — a\nhouse price is neither — stay deliberately uncoloured.\n\nTwo things it will not do. It never invents a comparison: every band word\n(\"above the UK average\") comes from `js/thresholds.js` and always sits next to\nthe figure it describes, which is in the table below the paragraph. And it never\npretends to cover ground it does not — a Scottish postcode gets an explicit\n\"data.police.uk does not publish Scottish data\" with a link to Police Scotland,\nnot a blank card. Deprivation deciles are computed against each nation's own\nindex and denominator.\n\nAn **AI summary** is optional and off by default. There is no server here to\nkeep an API key in, so it uses one you paste yourself, stored in your own\nbrowser and sent to nothing but `api.anthropic.com`. The model is given only\nthe computed facts, and every number it writes back is checked against them —\nanything untraceable is flagged rather than shown quietly. Without a key there\nis a \"copy the prompt\" button, and the report is complete either way.\n\nLocal development (both pages fetch `data/registry.json`, which `file://`\nblocks):\n\n```bash\npython3 -m http.server 8000   # then http://localhost:8000/report.html?postcode=SW111AA\n```\n\n## MCP server\n\n[`mcp/`](mcp/README.md) exposes all of this to AI agents over the Model Context\nProtocol — five tools: a full postcode report, a fast geography lookup, a\nside-by-side comparison of up to five postcodes, and search/fetch over the\nregistry itself.\n\nThere is nothing to install. Paste this into your client's connector or custom\nintegration field:\n\n```\nhttps://agentic-house-search.vercel.app/mcp\n```\n\nOr add it in one command:\n\n```bash\nclaude mcp add --transport http agentic-house-search https://agentic-house-search.vercel.app/mcp\n```\n\nOr, in a client that supports the\n[official MCP registry](https://registry.modelcontextprotocol.io), add it by\nname without a URL at all — search `agentic-house-search`, or use\n`io.github.asturksever/agentic-house-search`.\n\nThe [connect page](https://agentic-house-search.vercel.app/connect.html)\nhas the same thing with a copy button and per-client instructions. The hosted\nendpoint is free, needs no account or key, and carries a courtesy rate limit\nthat exists to protect the government APIs underneath — not to sell you\nanything. Running it yourself has no limit:\n\n```bash\nnpx -y agentic-house-search          # stdio, published on npm\nnpx -y agentic-house-search --http   # your own streamable HTTP endpoint\n```\n\nIt runs the **same** provider modules as `report.html` rather than a\nreimplementation, so a threshold, a coverage gate or a caveat is written once\nand both surfaces agree. See [`mcp/README.md`](mcp/README.md).\n\n## Schema\n\n```json\n{\n  \"id\": \"police-street-crime\",\n  \"dataset\": \"Street-level crime, outcomes and stop & search\",\n  \"publisher\": \"Home Office / UK police forces (data.police.uk)\",\n  \"link\": \"https://data.police.uk/\",\n  \"api\": \"https://data.police.uk/api/crimes-street/all-crime?lat={lat}&lng={lng}&date={YYYY-MM}\",\n  \"api_docs\": \"https://data.police.uk/docs/\",\n  \"format\": \"JSON REST API (no key required); CSV bulk downloads\",\n  \"licence\": \"Open Government Licence v3\",\n  \"coverage\": \"England, Wales & Northern Ireland\",\n  \"update_frequency\": \"Monthly\",\n  \"questions\": [\n    \"How safe is this postcode / street compared with the borough or national average?\",\n    \"What are the most common offence types here (burglary, ASB, drugs, vehicle crime)?\",\n    \"Is crime trending up or down over the last 12-36 months?\",\n    \"Where are the local crime hotspots and what happened to each case (outcomes)?\"\n  ],\n  \"category\": \"Crime\"\n}\n```\n\n## Datasets by category\n\n### Crime\n\n| Dataset | Publisher | API | Licence |\n| --- | --- | --- | --- |\n| [Street-level crime, outcomes and stop & search](https://data.police.uk/) | Home Office / UK police forces (data.police.uk) | `https://data.police.uk/api/crimes-street/all-crime?lat={lat}&lng={lng}&date={YYYY-MM}` | Open Government Licence v3 |\n\n### Demographics\n\n| Dataset | Publisher | API | Licence |\n| --- | --- | --- | --- |\n| [Census 2021 (ethnicity, religion, age, household composition, tenure, occupation, qualifications)](https://www.ons.gov.uk/census) | Office for National Statistics | `https://api.beta.ons.gov.uk/v1/population-types` | Open Government Licence v3 |\n\n### Demographics / Overview\n\n| Dataset | Publisher | API | Licence |\n| --- | --- | --- | --- |\n| [Output Area Classification (OAC 2021) & London Output Area Classification (LOAC)](https://data.london.gov.uk/dataset/london-area-classification) | ONS / Greater London Authority (London Datastore) | `https://data.london.gov.uk/api/action/package_show?id=london-area-classification` | Open Government Licence v3 |\n\n### Affluence\n\n| Dataset | Publisher | API | Licence |\n| --- | --- | --- | --- |\n| [Small area model-based income estimates (MSOA) + approximated social grade & qualifications (Census tables TS062/TS067)](https://www.ons.gov.uk/employmentandlabourmarket/peopleinwork/earningsandworkinghours/datasets/smallareaincomeestimatesformiddlelayersuperoutputareasenglandandwales) | Office for National Statistics | `https://www.nomisweb.co.uk/api/v01/dataset/def.sdmx.json` | Open Government Licence v3 |\n\n### Affluence (Deprivation)\n\n| Dataset | Publisher | API | Licence |\n| --- | --- | --- | --- |\n| [English Indices of Multiple Deprivation (IMD 2019)](https://www.gov.uk/government/statistics/english-indices-of-deprivation-2019) | MHCLG (Ministry of Housing, Communities & Local Government) | `https://opendatacommunities.org/sparql` | Open Government Licence v3 |\n\n### Property prices\n\n| Dataset | Publisher | API | Licence |\n| --- | --- | --- | --- |\n| [Price Paid Data (every residential sale) + UK House Price Index](https://www.gov.uk/government/collections/price-paid-data) | HM Land Registry | `https://landregistry.data.gov.uk/landregistry/query` | Open Government Licence v3 (address fields have extra conditions) |\n\n### Property prices (Rents)\n\n| Dataset | Publisher | API | Licence |\n| --- | --- | --- | --- |\n| [Price Index of Private Rents & private rental market summary statistics](https://www.ons.gov.uk/economy/inflationandpriceindices/bulletins/privaterentandhousepricesuk/latest) | Office for National Statistics / Valuation Office Agency | `https://api.beta.ons.gov.uk/v1/datasets` | Open Government Licence v3 |\n\n### Ownership & tenure\n\n| Dataset | Publisher | API | Licence |\n| --- | --- | --- | --- |\n| [INSPIRE Index Polygons](https://use-land-property-data.service.gov.uk/datasets/inspire) | HM Land Registry | `https://use-land-property-data.service.gov.uk/datasets/inspire/download` | Open Government Licence v3 (INSPIRE end-user licence) |\n| [CCOD / OCOD](https://use-land-property-data.service.gov.uk/datasets/ccod) | HM Land Registry | `https://use-land-property-data.service.gov.uk/api/v1/datasets/ccod` | Free for non-commercial use; commercial licence available |\n| [Companies House](https://find-and-update.company-information.service.gov.uk/) | Companies House | `https://api.company-information.service.gov.uk/search/companies?q={name}` | Open Government Licence v3 |\n| [Council Tax valuation bands (per-property band A–H) and VOA band statistics](https://www.gov.uk/council-tax-bands) | Valuation Office Agency / GOV.UK | `https://www.tax.service.gov.uk/check-council-tax-band/search` | Open Government Licence v3 |\n| [Council tax levels set by local authorities (Band D charge by council & parish)](https://www.gov.uk/government/collections/council-tax-statistics) | MHCLG | `CSV/ODS releases on GOV.UK` | Open Government Licence v3 |\n\n### Planning & constraints\n\n| Dataset | Publisher | API | Licence |\n| --- | --- | --- | --- |\n| [Planning Data platform](https://www.planning.data.gov.uk/dataset/) | MHCLG (planning.data.gov.uk) | `https://www.planning.data.gov.uk/entity.json?dataset=conservation-area&latitude={lat}&longitude={lng}` | Open Government Licence v3 |\n| [National Heritage List for England](https://historicengland.org.uk/listing/the-list/) | Historic England | `https://opendata-historicengland.hub.arcgis.com/` | Open Government Licence v3 |\n| [Planning applications aggregated from every UK local authority register](https://www.planit.org.uk/) | PlanIt (open aggregator of LA planning portals) | `https://www.planit.org.uk/api/applics/json?lat={lat}&lng={lng}&krad=1&recent=200` | Source records are OGL LA data; aggregator has its own terms |\n\n### Ground risk\n\n| Dataset | Publisher | API | Licence |\n| --- | --- | --- | --- |\n| [BGS GeoSure (subsidence, shrink–swell clay, landslide, soluble rocks) and Radon Potential](https://www.bgs.ac.uk/datasets/geosure/) | British Geological Survey | `https://map.bgs.ac.uk/arcgis/services` | Open viewing under BGS OpenGeoscience; commercial licence for full datasets |\n| [Mining Reporting Areas and coal mining hazards](https://www.gov.uk/government/organisations/the-coal-authority) | The Coal Authority (Mining Remediation Authority) | `https://opendata-coalauthority.hub.arcgis.com/` | Open Government Licence v3 |\n\n### Noise\n\n| Dataset | Publisher | API | Licence |\n| --- | --- | --- | --- |\n| [Strategic noise mapping Round 4 (2022)](https://www.gov.uk/government/publications/strategic-noise-mapping-2022) | Defra / Environment Agency (Data Services Platform) | `https://environment.data.gov.uk/dataset/562c9d56-7c2d-4d42-83bb-578d6e97a517` | Open Government Licence v3 |\n\n### Transport\n\n| Dataset | Publisher | API | Licence |\n| --- | --- | --- | --- |\n| [NaPTAN](https://beta-naptan.dft.gov.uk/) | Department for Transport | `https://naptan.api.dft.gov.uk/v1/access-nodes?dataFormat=csv` | Open Government Licence v3 |\n\n### Transport (London)\n\n| Dataset | Publisher | API | Licence |\n| --- | --- | --- | --- |\n| [TfL Unified API](https://tfl.gov.uk/info-for/open-data-users/) | Transport for London | `https://api.tfl.gov.uk/` | TfL open data licence (free) |\n\n### Transport (Connectivity score)\n\n| Dataset | Publisher | API | Licence |\n| --- | --- | --- | --- |\n| [PTAL](https://data.london.gov.uk/dataset/public-transport-accessibility-levels) | Transport for London / GLA (London Datastore) | `https://data.london.gov.uk/api/action/package_show?id=public-transport-accessibility-levels` | Open Government Licence / TfL terms |\n\n### Transport (extended)\n\n| Dataset | Publisher | API | Licence |\n| --- | --- | --- | --- |\n| [Bus Open Data Service](https://data.bus-data.dft.gov.uk/) | Department for Transport | `https://data.bus-data.dft.gov.uk/api/v1/dataset/?api_key={key}` | Open Government Licence v3 |\n| [Rail Data Marketplace / Darwin](https://raildata.org.uk/) | Rail Delivery Group / National Rail | `https://raildata.org.uk/` | Free for registered users (National Rail terms) |\n| [Journey Time Statistics](https://www.gov.uk/government/collections/journey-time-statistics) | Department for Transport | `CSV/ODS bulk on GOV.UK, keyed by LSOA` | Open Government Licence v3 |\n| [STATS19 road safety data](https://www.data.gov.uk/dataset/cb7ae6f0-4be6-4935-9277-47e5ce24a11f/road-safety-data) | Department for Transport | `CSV bulk` | Open Government Licence v3 |\n| [National Chargepoint Registry](https://www.national-charge-point-registry.uk/) | Department for Transport / OZEV | `https://chargepoints.dft.gov.uk/api/retrieve/registry/format/json` | Open Government Licence v3 |\n\n### Amenities\n\n| Dataset | Publisher | API | Licence |\n| --- | --- | --- | --- |\n| [Food Hygiene Rating Scheme](https://ratings.food.gov.uk/) | Food Standards Agency | `https://api.ratings.food.gov.uk/Establishments?latitude={lat}&longitude={lng}&maxDistanceLimit={miles}` | Open Government Licence v3 |\n| [Active Places Power](https://www.activeplacespower.com/) | Sport England | `https://www.activeplacespower.com/API` | Open (registration; attribution) |\n\n### Amenities (Health)\n\n| Dataset | Publisher | API | Licence |\n| --- | --- | --- | --- |\n| [NHS Organisation Data Service](https://www.odsdatasearchandexport.nhs.uk/) | NHS England | `https://directory.spineservices.nhs.uk/ORD/2-0-0/organisations?PostCode={postcode}&PrimaryRoleId=RO177` | Open Government Licence v3 |\n\n### Amenities / Noise point-sources\n\n| Dataset | Publisher | API | Licence |\n| --- | --- | --- | --- |\n| [OpenStreetMap via Overpass API](https://www.openstreetmap.org/) | OpenStreetMap contributors | `https://overpass-api.de/api/interpreter` | ODbL 1.0 |\n\n### Health & care\n\n| Dataset | Publisher | API | Licence |\n| --- | --- | --- | --- |\n| [CQC ratings and locations](https://www.cqc.org.uk/about-us/transparency/using-cqc-data) | Care Quality Commission | `https://api.service.cqc.org.uk/public/v1/locations?postalCode={postcode}` | Open Government Licence v3 |\n| [Ofsted childcare providers register](https://www.gov.uk/government/statistical-data-sets/childcare-providers-and-inspections-management-information) | Ofsted | `CSV/ODS monthly management information on GOV.UK` | Open Government Licence v3 |\n\n### Schools\n\n| Dataset | Publisher | API | Licence |\n| --- | --- | --- | --- |\n| [Get Information about Schools (GIAS)](https://get-information-schools.service.gov.uk/) | Department for Education | `https://get-information-schools.service.gov.uk/Downloads` | Open Government Licence v3 |\n\n### Schools (Ratings)\n\n| Dataset | Publisher | API | Licence |\n| --- | --- | --- | --- |\n| [Ofsted inspection outcomes (management information, monthly)](https://www.gov.uk/government/statistical-data-sets/monthly-management-information-ofsteds-school-inspections-outcomes) | Ofsted | `CSV/ODS monthly files on GOV.UK` | Open Government Licence v3 |\n\n### Schools (Results)\n\n| Dataset | Publisher | API | Licence |\n| --- | --- | --- | --- |\n| [School performance tables (KS2 results, Progress 8, Attainment 8, A-level) + Explore Education Statistics](https://www.compare-school-performance.service.gov.uk/) | Department for Education | `https://www.compare-school-performance.service.gov.uk/download-data` | Open Government Licence v3 |\n\n### Environment (Air quality)\n\n| Dataset | Publisher | API | Licence |\n| --- | --- | --- | --- |\n| [Defra UK-AIR modelled background pollution maps (annual NO2, PM10, PM2.5 on 1km grid) + monitoring network](https://uk-air.defra.gov.uk/data/pcm-data) | Defra | `https://uk-air.defra.gov.uk/data/pcm-data` | Open Government Licence v3 |\n\n### Environment (Air quality, London)\n\n| Dataset | Publisher | API | Licence |\n| --- | --- | --- | --- |\n| [London Air Quality Network](https://www.londonair.org.uk/) | Imperial College London ERG | `https://api.erg.ic.ac.uk/AirQuality/` | Free to use with attribution |\n\n### Environment (Flood risk)\n\n| Dataset | Publisher | API | Licence |\n| --- | --- | --- | --- |\n| [Risk of Flooding from Rivers and Sea + Risk of Flooding from Surface Water (likelihood categories: very low to high)](https://check-long-term-flood-risk.service.gov.uk/) | Environment Agency | `https://environment.data.gov.uk/dataset/bad20199-6d39-4aad-8564-26a46778fd94` | Open Government Licence v3 |\n\n### Environment (Greenspace)\n\n| Dataset | Publisher | API | Licence |\n| --- | --- | --- | --- |\n| [OS Open Greenspace + Natural England green infrastructure / access to greenspace](https://www.ordnancesurvey.co.uk/products/os-open-greenspace) | Ordnance Survey / Natural England | `https://osdatahub.os.uk/downloads/open/OpenGreenspace` | Open Government Licence v3 |\n\n### Environment (Designations)\n\n| Dataset | Publisher | API | Licence |\n| --- | --- | --- | --- |\n| [MAGIC / Defra designations](https://magic.defra.gov.uk/) | Natural England / Defra | `https://naturalengland-defra.opendata.arcgis.com/` | Open Government Licence v3 |\n\n### Geography backbone (all tabs)\n\n| Dataset | Publisher | API | Licence |\n| --- | --- | --- | --- |\n| [ONS Postcode Directory (ONSPD/NSPL) + Open Geography Portal boundaries](https://geoportal.statistics.gov.uk/) | ONS Geography | `https://api.postcodes.io/postcodes/{postcode}` | Open Government Licence v3 (postcode data contains Royal Mail/OS derived IP with permitted use) |\n| [OS Data Hub](https://osdatahub.os.uk/) | Ordnance Survey | `https://api.os.uk/search/places/v1/postcode?postcode={postcode}&key={key}` | OS OpenData (OGL) for open products; premium plan for Places/NGD |\n\n### Extras (property-level, same ecosystem)\n\n| Dataset | Publisher | API | Licence |\n| --- | --- | --- | --- |\n| [Energy Performance Certificates (EPC)](https://epc.opendatacommunities.org/) | DLUHC / MHCLG | `https://epc.opendatacommunities.org/api/v1/domestic/search?postcode={postcode}` | OGL-style terms (attribution required) |\n\n### Extras (connectivity)\n\n| Dataset | Publisher | API | Licence |\n| --- | --- | --- | --- |\n| [Ofcom Connected Nations](https://www.ofcom.org.uk/research-and-data/multi-sector-research/infrastructure-research) | Ofcom | `https://api.ofcom.org.uk/` | Ofcom open terms / OGL |\n\n### Extras (market & listings)\n\n| Dataset | Publisher | API | Licence |\n| --- | --- | --- | --- |\n| [Live for-sale / to-let listings](https://propertydata.co.uk/) | Various commercial providers | `https://api.propertydata.co.uk/` | Commercial — check terms; scraping portals breaches their T&Cs |\n\n## Usage\n\n```bash\ncurl -s https://raw.githubusercontent.com/asturksever/agentic-house-search-data-registry/main/data/registry.json \\\n  | jq '.sources[] | select(.category==\"Planning & constraints\") | {dataset, api}'\n```\n\nLocal development (both pages fetch `data/registry.json`, which `file://` blocks):\n\n```bash\npython3 -m http.server 8000   # then http://localhost:8000/report.html?postcode=SW111AA\n```\n\n## Caveats\n\nEndpoints were verified against publisher documentation as of 2 August 2026. Government APIs move; treat `api` as a starting point and check `api_docs` before depending on it. Some entries require a free API key (Ofcom, BODS, EPC, OS Data Hub, CQC, Companies House, Land Registry CCOD). One entry — live for-sale listings — is explicitly **not** open data and is included so builders know where the wall is.\n\n## Licence\n\nThis compilation is released under [CC0 1.0](LICENSE) (public domain). The underlying datasets remain © their publishers; most are Open Government Licence v3, and each entry records its own licence.\n\n## Contributing\n\nMissing a dataset, or spotted a dead endpoint? Open an issue or a PR editing `data/registry.json` — `registry.html` and `data/registry.csv` are regenerated from it.\n",
  "bytes": 22236,
  "sha": "21fde6e0991c31d245977a7f13b7bde0963132bb72f5601e11da3fc3d3653748",
  "repo_slug": "asturksever/agentic-house-search-data-registry",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_asturksever_agentic_house_sear_ce4dc493/readme"
}