Skip to main content
Glama

gaff-check

Due diligence on any Irish property, for AI agents.

gaff-check is an open-source MCP (Model Context Protocol) server that gives AI assistants — Claude, Cursor, ChatGPT, or any MCP-compatible agent — ground truth from Ireland's scattered public property datasets.

Ask your assistant:

"Should I bid on this bungalow in Killiney? Tell me everything I should worry about."

…and it can check, in one conversation:

  • 🏗️ Planning applications near the property (that pending apartment block behind the back garden)

  • 💶 Sold prices on the street and in the area (Property Price Register)

  • 🌊 Flood risk (OPW / GSI flood mapping)

  • ☢️ Radon risk (EPA radon risk areas)

  • 🗺️ Zoning (Myplan generalised land-use zoning)

  • BER / energy rating context and retrofit grant signals

  • 🚓 Recorded-crime context for the containing Garda sub-district — category counts and carefully qualified rates, never a safety score

All from official, public Irish datasets. No scraping of commercial listing sites. Records and clearly labelled derived context — never invented certainty.

Why

Buying (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.

Related MCP server: UK Property Intelligence

What it is not

  • Not a valuation engine. It returns records; your agent does the thinking.

  • Not a Daft/MyHome scraper. Public state data only.

  • Not a website. It's a utility that enhances tools you already use.

Quick start

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.

Claude Code:

claude mcp add --transport stdio --scope user gaff-check -- npx -y gaff-check

Run /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.

Codex:

codex mcp add gaff-check -- npx -y gaff-check

Run codex mcp list to confirm the server is configured, then start a new Codex session and use /mcp to inspect the active tools.

Claude Desktop (claude_desktop_config.json):

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

What it looks like

You: I'm thinking about a house near Fitzwilliam Square in Dublin 2, built in the 1980s. What should I know?

Claude (calling resolve_location, planning_applications, sold_prices, radon_risk, zoning, flood_risk, ber_context, recorded_crime_context):

Here's what the public records say about that area:

  • 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.

  • 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).

  • 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).

  • Zoning: the square itself is zoned open space under the Dublin City Development Plan 2022–2028; surrounding streets are residential/mixed.

  • 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.

  • 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).

  • 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.

Every figure above came from an official dataset, with source, licence, vintage and caveats attached in the payload.

Hacking on it

git clone https://github.com/iarfhlaith/gaff-check.git
cd gaff-check
npm install && npm run build

The repo ships a project-scoped .mcp.json for Claude Code and .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.

See CONTRIBUTING.md for house style, docs/HANDOVER.md for the concise operating brief, and SPEC.md plus docs/DATA_SOURCES.md for the detailed sources of truth.

Status

Published on npm as gaff-check@0.2.0. Working today:

Tool

What it answers

Source

resolve_location

"Where exactly is this address?"

OpenStreetMap Nominatim

planning_applications

"What's been applied for / decided near this point?"

National Planning Application Database (DHLGH)

sold_prices

"What did homes here actually sell for?"

Property Price Register (PSRA, official CSVs)

radon_risk

"Is this a high radon area?"

EPA Radon Risk Map

zoning

"What is this land zoned for?"

Myplan generalised zoning (DHLGH)

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)

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

recorded_crime_context

"What recorded-crime categories are published for this wider Garda area?"

CSO CJA11/CJA39/CJQ10/CJQ11 + Garda boundaries + Census 2022 denominator

All eight tools are implemented. Current priorities are post-launch reliability, upstream-drift detection, and keeping source/licence/grant metadata current; see docs/LAUNCH.md for the watchlist.

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.

Prior art

irishmcp.ie hosts a PPR-only MCP server built on CivicTech Ireland's price-register API — 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.

Licence

MIT. 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.

Available Tools

1 tool
resolve_locationA

Resolve a free-text Irish address or place name to geographic coordinates (WGS84 lat/lng), returning ranked candidate matches.

Use this first when the user gives an address, street, townland, or place name in Ireland, to confirm the correct location before calling other gaff-check tools — every candidate echoes its full resolved name so you (and the user) can sanity-check the match. If you already have exact lat/lng coordinates, you do not need this tool.

Geocoding uses OpenStreetMap Nominatim and is best-effort: rural addresses and new estates may match poorly, and Eircodes only resolve where OSM mappers happen to have added them (there is no licensed Eircode lookup — if the user has only an Eircode, ask for the address or an approximate location instead). The confidence score ranks candidates within one query; it is not an absolute probability. Coordinates are WGS84 decimal degrees.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of candidate matches to return (1–10, default 5)
queryYesFree-text Irish address or place name, e.g. '25 Fitzwilliam Square, Dublin 2' or 'Salthill, Galway'

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses use of OpenStreetMap Nominatim, best-effort nature, relative confidence score, candidate echoing for sanity-check, and Eircode limitations. Does not explicitly state it is read-only or has no side effects, but the nature of geocoding implies read-only. Minor omission prevents a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is concise (~120 words) and well-structured: front-loaded purpose, then usage guidance, then behavioral details. Every sentence adds value. No redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, no annotations, and no siblings, the description covers all essential aspects: purpose, when to use, limitations, confidence score, coordinate system, and candidate format. It provides enough context for an agent to use the tool correctly without additional documentation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% description coverage, so baseline is 3. Description adds value by explaining that candidates echo full resolved name for sanity-check, which goes beyond the schema's parameter descriptions. However, the parameter descriptions in the schema are already quite clear, so the addition is modest.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it resolves free-text Irish addresses/place names to WGS84 coordinates, returning ranked candidates. The verb 'resolve' and specific resource are explicit, and the description distinguishes it as a first step before other tools, though no sibling tools are listed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when to use: when user gives an address/place name in Ireland, before other gaff-check tools. Also tells when not to use: if exact lat/lng known. Provides caveats about rural addresses, new estates, and Eircode limitations, offering guidance on alternative actions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 1 tool updatev0.1.0
    • First observedresolve_location

TDQS

A4.4/5.0
Disambiguation5/5

Only one tool exists, so there is no possibility of confusion or overlap between tools.

Naming Consistency5/5

The single tool uses a clear verb_noun pattern (resolve_location), which is consistent and descriptive.

Tool Count3/5

One tool is minimal but may be appropriate for a focused geocoding server; however, it feels thin for a comprehensive address service.

Completeness2/5

The server only offers forward geocoding, missing reverse geocoding, address validation, or Eircode lookup, which are obvious gaps for an Irish address tool.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Provides AI access to Korea's land use planning, urban regulations, and permit information through natural language queries. It integrates tools for land analysis, regulation verification, and public notice scraping to prevent hallucinations in property-related AI applications.
    8
    18
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to query UK property data including EPCs, sale history, planning, flood risk, council tax, demographics, and more via the Homedata API.
    18
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/iarfhlaith/gaff-check'

If you have feedback or need assistance with the MCP directory API, please join our Discord server