UK Property Data
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
UK property data — Land Registry comps, EPC, Rightmove, rental yields, stamp duty, Companies House
| Author | io.github.paulieb89 |
|---|---|
| Access | mixed |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 258 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"UK Property Data": {
"url": "https://property-shared.fly.dev/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (14)
property_compsread-onlyComparable sales from Land Registry Price Paid Data. Defaults return the standard residential set: - property_type=None means residential (F+D+S+T). Pass "F"/"D"/"S"/"T"/"O" for a single type, or "ALL" to disable type filtering (firehose). - transaction_category defaults to "A" (standard sales). Pass None to include category-B (bulk transfers, non-standard conveyances). - filter_outliers=False by default; set True for IQR-trimmed stats AND transaction list (1.5*IQR rule, needs >=4 prices). limit caps returned transactions (max 200). enrich_epc attaches EPC floor area and price-per-sqft to each transaction — slower but richer.
Parameters:
postcode(required) — stringlimit— integermonths— integer — Number of calendar months ending today; default 24. Results are limited to available coverage.addressenrich_epc— booleansearch_level— stringproperty_typefilter_outliers— booleantransaction_category
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
property_yieldread-onlyGross rental yield for a UK postcode. Combines Land Registry sale comps (median sale price) with Rightmove rental listings (median monthly rent) to produce a gross yield percentage.
Parameters:
postcode(required) — string — UK postcode (e.g. "NG1 2NS").months— integer — Number of calendar months ending today; default 24. Results are limited to available coverage.search_level— string — PPD search granularity — "postcode", "sector" (default), or "district".auto_escalate— boolean — Compatibility parameter. Does NOT widen the search area on the live source (see `warnings`); previously postcode→ sector→district. Default True. Set False for strict-locality only.property_type— Filter sales by type. None (default) = residential set (F+D+S+T). Pass "F"/"D"/"S"/"T"/"O" for one type, "ALL" for firehose.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
rental_analysisread-onlyRental market analysis and achievable rent estimate. auto_escalate widens the Rightmove search RADIUS when fewer than 5 listings are found (thin market). This is rental-radius escalation and is unaffected by the PPD geography containment: it does not change a postcode's outcode or sector, so it carries none of the limit-dependence that disabled PPD auto-widening. Response includes thin_market, escalated_from, escalated_to fields when escalation occurs.
Parameters:
postcode(required) — stringradius— numberauto_escalate— booleanpurchase_price
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
property_epcread-onlyEnergy Performance Certificate data for a UK property or postcode area. With address: returns the matched EPC certificate for that specific property. Without address: returns the record count and, when the bounded response contains every matching summary, the rating distribution. Property-type breakdown and floor-area statistics are NOT available — the EPC service exposes them only on individual certificates. Returns null only when no certificates are lodged for the postcode. A null result means no such certificate is lodged. If the EPC service cannot be reached the tool raises an error instead — never treat an error as evidence that a property has no certificate.
Parameters:
postcode(required) — stringaddress
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
property_epc_searchread-onlyDEPRECATED — use property_epc_summaries then epc_certificate. This tool returned score, floor_area, property_type, habitable_rooms and inspection_date for every certificate at a postcode. The EPC service no longer exposes those fields in a search: they exist only on a full certificate. Reproducing the old response would require one upstream request per certificate, so this tool is unsupported rather than silently degraded or silently expensive.
Parameters:
postcode(required) — string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
property_epc_summariesread-onlyList EPC certificate summaries at a postcode — for candidate selection. Returns one bounded page. Each entry contains only what the EPC search exposes: certificate_number, address, uprn (often absent), energy band, registration_date and schema_type. Energy score, floor area and property type are NOT available here — fetch a specific certificate for those. Workflow when a Rightmove listing has no house number: 1. property_epc_summaries(postcode) to list candidates. 2. Narrow by address text and, where present, uprn. 3. epc_certificate(lmk_key=<certificate_number>) for the chosen one, then cross-check its floor_area against the listing. 4. If several candidates remain equally plausible, present them all — do not guess. Selecting arbitrarily attaches another property's data. `complete` is false when the postcode holds more records than this page returns. Upstream page traversal is not snapshot-stable, so a multi-page result is a bounded sample, not a guaranteed-complete set. An empty `results` list means no certificates are lodged. If the EPC service cannot be reached the tool raises an error instead — never treat an error as evidence that a property has no certificate.
Parameters:
postcode(required) — stringpage— integer
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
epc_certificateread-onlyFetch a single EPC certificate by its GOV.UK certificate number. Use after property_epc_summaries has listed the candidates and you have picked one — this is faster than property_epc(postcode, address) as it makes a direct lookup with no address matching or postcode re-fetch. The parameter is named lmk_key as a compatibility alias; pass the certificate number, which is returned in every property_epc_summaries row. (property_epc_search is deprecated and raises — do not call it.) Returns the full EPC certificate, or null only when no such certificate is lodged. A null result means no such certificate is lodged. If the EPC service cannot be reached the tool raises an error instead — never treat an error as evidence that a property has no certificate.
Parameters:
lmk_key(required) — string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
stamp_dutyread-onlyUK Stamp Duty Land Tax (SDLT) calculation with full breakdown.
Parameters:
price(required) — integernon_resident— booleanfirst_time_buyer— booleanadditional_property— boolean
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
rightmove_searchread-onlyFetch Rightmove listings for a postcode. listing_type: "sale" or "rent". sort_by: "newest", "most_reduced", "price_asc", "price_desc". Images are excluded from results.
Parameters:
postcode(required) — stringradius— numbersort_bymax_pages— integermax_pricelisting_type— stringmin_bedroomsproperty_type
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
rightmove_listingread-onlyFull detail for a single Rightmove listing. property_id is the numeric Rightmove property ID (the digits at the end of a rightmove.co.uk/properties/... URL), max 12 digits. Full URLs are not accepted. include_images fetches and embeds photos and floorplans as MCP image content. max_images caps the number of property photos (default 3); floorplans always included.
Parameters:
property_id(required) — stringmax_images— integerinclude_images— boolean
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
property_blocksread-onlyProperty block analysis — identify buildings with multiple flat sales (block-buy opportunities).
Parameters:
postcode(required) — stringmonths— integer — Number of calendar months ending today; default 24. Results are limited to available coverage.search_level— string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
company_searchread-onlySearch Companies House for a company by name.
Parameters:
name(required) — string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
planning_searchread-onlyFind the council planning portal URL for a postcode.
Parameters:
postcode(required) — string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
ppd_transactionsread-onlyLand Registry Price Paid transactions for a postcode, most recent first. Returns up to `limit` most recent transactions **within snapshot coverage** (`coverage_from`-`coverage_to` in the response's `provenance`). Unfiltered by default -- category-B bulk transfers and commercial sales are included. Pass `property_type` (F=flat, D=detached, S=semi, T=terraced, O=other) to restrict the result to a single type. **Not a complete property history.** Check `provenance.older_records_exist` and `provenance.sample_complete` before saying anything about what a property has or has not sold for. An empty result means "no sales within the stated coverage" -- never "never sold". For clean residential comparable sales, use `property_comps`.
Parameters:
postcode(required) — stringlimit— integerproperty_type
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.