{
  "markdown": "# gaff-check\n\n**Due diligence on any Irish property, for AI agents.**\n\n`gaff-check` is an open-source [MCP (Model Context Protocol)](https://modelcontextprotocol.io) server that gives AI assistants — Claude, Cursor, ChatGPT, or any MCP-compatible agent — ground truth from Ireland's scattered public property datasets.\n\nAsk your assistant:\n\n> *\"Should I bid on this bungalow in Killiney? Tell me everything I should worry about.\"*\n\n…and it can check, in one conversation:\n\n- 🏗️ **Planning applications** near the property (that pending apartment block behind the back garden)\n- 💶 **Sold prices** on the street and in the area (Property Price Register)\n- 🌊 **Flood risk** (OPW / GSI flood mapping)\n- ☢️ **Radon risk** (EPA radon risk areas)\n- 🗺️ **Zoning** (Myplan generalised land-use zoning)\n- ⚡ **BER / energy rating context** and retrofit grant signals\n- 🚓 **Recorded-crime context** for the containing Garda sub-district — category counts and carefully qualified rates, never a safety score\n\nAll from official, public Irish datasets. No scraping of commercial listing sites. Records and clearly labelled derived context — never invented certainty.\n\n## Why\n\nBuying (or renovating, or just being nosy about) a house in Ireland means trawling six-plus government websites, each with its own dreadful UX, none of which talk to each other. The data is public. The synthesis isn't. `gaff-check` is the glue: a single, boring, reliable tool layer so the *reasoning* can happen in your AI assistant.\n\n## What it is not\n\n- Not a valuation engine. It returns records; your agent does the thinking.\n- Not a Daft/MyHome scraper. Public state data only.\n- Not a website. It's a utility that enhances tools you already use.\n\n## Quick start\n\n`gaff-check` runs as a stdio MCP server and requires Node.js 20 or newer. Do not run `npx -y gaff-check` on its own: it will wait for an MCP client to send requests, so the terminal will appear to hang. Add it to your assistant instead; no API keys or separate package installation are needed.\n\nClaude Code:\n\n```bash\nclaude mcp add --transport stdio --scope user gaff-check -- npx -y gaff-check\n```\n\nRun `/mcp` in Claude Code to confirm that gaff-check is connected. `--scope user` makes it available in every project; omit that option if you want Claude Code's default project-local configuration instead.\n\nCodex:\n\n```bash\ncodex mcp add gaff-check -- npx -y gaff-check\n```\n\nRun `codex mcp list` to confirm the server is configured, then start a new Codex session and use `/mcp` to inspect the active tools.\n\nClaude Desktop (`claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"gaff-check\": { \"command\": \"npx\", \"args\": [\"-y\", \"gaff-check\"] }\n  }\n}\n```\n\n## What it looks like\n\n> **You:** I'm thinking about a house near Fitzwilliam Square in Dublin 2, built in the 1980s. What should I know?\n>\n> **Claude** *(calling `resolve_location`, `planning_applications`, `sold_prices`, `radon_risk`, `zoning`, `flood_risk`, `ber_context`, `recorded_crime_context`)*:\n>\n> Here's what the public records say about that area:\n>\n> - **Planning:** 5+ applications within 300 m — most recently a protected-structure alteration granted Feb 2025 (Dublin City Council, ref WEB1305/25, 81 m away). Several protected-structure precedents on the square itself.\n> - **Sold prices:** recent registered sales nearby range widely; the register shows exact declared prices per address (e.g. €1.8 m for a Howth Road semi in June 2026 — every record carries its date, address and VAT flag).\n> - **Radon:** the area is in the EPA's \"about 1 in 20 homes\" band — not a designated High Radon Area, but the EPA advises testing any home (~€50).\n> - **Zoning:** the square itself is zoned open space under the Dublin City Development Plan 2022–2028; surrounding streets are residential/mixed.\n> - **Flood:** no mapped groundwater or historic flood extents at the point — but note the OPW's river/coastal models are licence-restricted and not checked; verify at floodinfo.ie.\n> - **BER context:** 1978–1999 dwellings in Dublin 2 skew C/D. If the listing claims a B, ask to see the cert. Current SEAI grants: €12,500 max for a heat pump, €1,300 attic insulation for a semi-D (verified July 2026).\n> - **Recorded crime:** annual CSO category counts for the containing Garda sub-district, plus a separately labelled wider division trend. These are administrative area totals, not incidents at the address; homicide and sexual offences are not published at sub-district level.\n>\n> Every figure above came from an official dataset, with source, licence, vintage and caveats attached in the payload.\n\n## Hacking on it\n\n```bash\ngit clone https://github.com/iarfhlaith/gaff-check.git\ncd gaff-check\nnpm install && npm run build\n```\n\nThe repo ships a project-scoped [`.mcp.json`](./.mcp.json) for Claude Code and [`.codex/config.toml`](./.codex/config.toml) for Codex. After building, open and trust the repository, then approve or restart the configured server when prompted. `npm test` runs the fixture-based unit tests; `RUN_E2E=1 npm run test:e2e` and `npm run eval` hit the live upstreams.\n\nSee [CONTRIBUTING.md](./CONTRIBUTING.md) for house style, [docs/HANDOVER.md](./docs/HANDOVER.md) for the concise operating brief, and [SPEC.md](./SPEC.md) plus [docs/DATA_SOURCES.md](./docs/DATA_SOURCES.md) for the detailed sources of truth.\n\n## Status\n\nPublished on npm as `gaff-check@0.2.0`. Working today:\n\n| Tool | What it answers | Source |\n|---|---|---|\n| `resolve_location` | \"Where exactly is this address?\" | OpenStreetMap Nominatim |\n| `planning_applications` | \"What's been applied for / decided near this point?\" | National Planning Application Database (DHLGH) |\n| `sold_prices` | \"What did homes here actually sell for?\" | Property Price Register (PSRA, official CSVs) |\n| `radon_risk` | \"Is this a high radon area?\" | EPA Radon Risk Map |\n| `zoning` | \"What is this land zoned for?\" | Myplan generalised zoning (DHLGH) |\n| `flood_risk` | \"Any mapped groundwater/historic flooding here?\" | GSI flood mapping (plus a pointer to OPW's floodinfo.ie for river/coastal models, which are licence-restricted) |\n| `ber_context` | \"What BER is typical for a house of this age here, and what grants exist?\" | CSO BER statistics (EBA02) + SEAI grant reference data |\n| `recorded_crime_context` | \"What recorded-crime categories are published for this wider Garda area?\" | CSO CJA11/CJA39/CJQ10/CJQ11 + Garda boundaries + Census 2022 denominator |\n\nAll eight tools are implemented. Current priorities are post-launch reliability, upstream-drift detection, and keeping source/licence/grant metadata current; see [docs/LAUNCH.md](./docs/LAUNCH.md) for the watchlist.\n\n**A note on Eircodes:** Eircode lookup is proprietary, so there's no free official way to turn an Eircode into coordinates. If you only have an Eircode, give your assistant the address too (or a rough location) — `resolve_location` handles the rest.\n\n## Prior art\n\n[irishmcp.ie](https://irishmcp.ie) hosts a PPR-only MCP server built on [CivicTech Ireland's price-register API](https://github.com/civictech-ie/price-register) — nice work, check it out if sold prices are all you need. gaff-check's scope is broader (planning, flood, radon, zoning, BER context), and it reads the official PSRA CSVs directly.\n\n## Licence\n\nMIT. Data returned by the tools is subject to the licences of the underlying public datasets (mostly CC-BY 4.0 / PSI) — see DATA_SOURCES.md.\n",
  "bytes": 7427,
  "sha": "80cc8ded98ec14d639290de170123aa704757a6468112a05a8b59e5e867d7263",
  "repo_slug": "iarfhlaith/gaff-check",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_iarfhlaith_gaff_check_c85fbb52/readme"
}