# UK Property Data MCP server

UK property data — Land Registry comps, EPC, Rightmove, rental yields, stamp duty, Companies House

## Links
- Registry page: https://www.getdrio.com/mcp/io-github-paulieb89-property-shared
- Repository: https://github.com/paulieb89/property-shared
- Website: https://bouch.dev/products/property-report

## Install
- Command: `uvx property-shared`
- Endpoint: https://property-shared.fly.dev/mcp
- Auth: Not captured

## Setup notes
- Package: Pypi property-shared v1.5.1
- Remote endpoint: https://property-shared.fly.dev/mcp

## Tools
- property_comps - Comparable 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. Endpoint: https://property-shared.fly.dev/mcp
- property_yield - Gross 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. Endpoint: https://property-shared.fly.dev/mcp
- rental_analysis - Rental market analysis and achievable rent estimate.

auto_escalate widens the search area when fewer than 5 listings are found
(thin market). Response includes thin_market, escalated_from, escalated_to
fields when escalation occurs. Endpoint: https://property-shared.fly.dev/mcp
- property_epc - Energy Performance Certificate data for a UK property or postcode area.

With address: returns the matched EPC certificate for that specific property.
Without address: returns an aggregated summary of every certificate at the
postcode — count, rating distribution, property-type breakdown, floor-area
range — plus a hint to call again with an address for single-property detail.

Returns None if no certificates exist for the postcode at all. Endpoint: https://property-shared.fly.dev/mcp
- property_epc_search - Browse all EPC certificates at a postcode — use when you have no house number.

Returns a slim list of every certificate at the postcode. Each entry contains:
  address, rating, score, floor_area (sqm), property_type, floor_level,
  habitable_rooms, inspection_date, lmk_key.

Workflow for Rightmove listings where the house number is not shown:
  1. Call rightmove_listing to obtain floor_area_sqm, property_type, and
     any floor-level signals in the description (e.g. "top floor", "ground floor").
  2. Call property_epc_search(postcode) to retrieve the full cert list.
  3. You MUST cross-reference each cert's floor_area against the listing's
     floor_area_sqm (accept within ±5 sqm) AND property_type must match.
     Also use floor_level and habitable_rooms where available.
  4. If a single cert matches, call epc_certificate(lmk_key) for the full detail.
  5. If multiple certs match equally, present all candidates — do not guess.
     If floor_area is unavailable on the listing, filter by property_type only
     and return all candidates.

Returns None if no certificates exist for the postcode. Endpoint: https://property-shared.fly.dev/mcp
- epc_certificate - Fetch a single EPC certificate by its lmk_key (certificate hash).

Use after property_epc_search has identified the correct cert — this is
faster than property_epc(postcode, address) as it makes a direct lookup
with no fuzzy matching or postcode re-fetch.

lmk_key is returned in every property_epc_search result.

Returns the full EPC certificate or None if not found. Endpoint: https://property-shared.fly.dev/mcp
- stamp_duty - UK Stamp Duty Land Tax (SDLT) calculation with full breakdown. Endpoint: https://property-shared.fly.dev/mcp
- rightmove_search - Fetch Rightmove listings for a postcode.

listing_type: "sale" or "rent". sort_by: "newest", "most_reduced",
"price_asc", "price_desc". Images are excluded from results. Endpoint: https://property-shared.fly.dev/mcp
- rightmove_listing - Full detail for a single Rightmove listing (URL or numeric ID).

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. Endpoint: https://property-shared.fly.dev/mcp
- property_blocks - Property block analysis — identify buildings with multiple flat sales (block-buy opportunities). Endpoint: https://property-shared.fly.dev/mcp
- company_search - Search Companies House for a company by name. Endpoint: https://property-shared.fly.dev/mcp
- planning_search - Find the council planning portal URL for a postcode. Endpoint: https://property-shared.fly.dev/mcp
- ppd_transactions - Raw Land Registry Price Paid transactions for a postcode. Endpoint: https://property-shared.fly.dev/mcp

## Resources
- councils://list - Return the 99-council UK planning portal registry as JSON.

Static reference data sourced from property_core/planning_councils.json.
Lets callers read the full registry once instead of calling planning_search
for individual lookups. MIME type: text/plain
- sdlt-bands://current - Return the current UK Stamp Duty Land Tax band schedule as JSON.

Static reference data matching `property_core/stamp_duty.py` exactly. Lets
an LLM cite the bands directly without calling the stamp_duty calculator. MIME type: text/plain
- epc-ratings://reference - Return EPC band definitions and score ranges as JSON.

Canonical reference for UK domestic Energy Performance Certificate bands
(A best, G worst), with SAP score ranges and one-line meanings. Grounds
LLM explanations of EPC results in published reference data rather than
training-data recall. MIME type: text/plain

## Prompts
- investment_analysis - Evaluate a UK property as a buy-to-let investment.

Calls comps + yield + EPC + stamp duty, then synthesises a yield + tax + risk
summary. Defaults assume an investor (additional_property=true). Arguments: address, postcode, purchase_price, additional_property, first_time_buyer, non_resident
- area_comparison - Compare 2-3 UK postcodes side-by-side for area-level investment evaluation.

Postcodes passed as a comma-separated string (e.g. "NG1 2NS, DE12 7DH"). Arguments: postcodes, months
- full_property_analysis - Comprehensive UK property analysis — composes comps, yield, EPC, asking prices, then synthesises.

This is a workflow prompt, not a single API call. The LLM follows the
instructions below to call the four primitive tools and synthesise the
results explicitly, so every input is visible in the conversation. Arguments: address, postcode, months

## Metadata
- Owner: io.github.paulieb89
- Version: 1.5.1
- Runtime: Pypi
- Transports: STDIO, HTTP
- License: Not captured
- Language: Not captured
- Stars: Not captured
- Updated: Apr 20, 2026
- Source: https://registry.modelcontextprotocol.io
