UK property research tools - crime stats, schools, demographics, valuations for AI.
MCP server providing UK property research tools for AI assistants. Enables Claude, GPT, and other LLMs to search properties, analyse area safety, find nearby schools, explore demographics, and build automated valuation models (AVMs).
Powered by Propbar's comprehensive UK property database covering 30+ million properties.
The get_comparables tool provides access to a comprehensive property search with 50+ filterable fields - perfect for building automated valuation models:
Example AVM workflow:
1. get_comparables({ latitude, longitude, propertyType: "flat", bedrooms: 2 })
2. Filter by sale date (last 12 months) and distance
3. Adjust for differences (floor area, EPC rating, condition)
4. Calculate £/sqft and apply to subject propertyHelp users make informed decisions with comprehensive area data:
| Tool | Description | Input |
|---|---|---|
search_areas | Search UK areas by name or postcode | query |
search_properties | Search UK properties by address | query |
get_area_details | Get coordinates and area codes | areaCode or path |
get_crime_stats | Crime statistics and safety rating | areaCode OR lat/lng |
get_schools | Schools with Ofsted ratings | areaCode OR lat/lng |
get_demographics | Census demographics | areaCode OR lat/lng |
get_property_basic | Basic property details | propertyId |
get_property_full | Full property with history | propertyId |
get_comparables | Comparable properties for valuation | lat/lng + filters |
The get_comparables tool queries an Elasticsearch index with 56 filterable fields:
| Field | Description |
|---|---|
build.propertyType | Detached, semi, terrace, flat, etc. |
roomDetails.beds | Number of bedrooms |
roomDetails.baths | Number of bathrooms |
build.totalFloorArea | Total floor area (sqm) |
build.constructionAge.* | Year built / construction period |
tenure.type | Freehold, leasehold, share of freehold |
councilTax.taxBand | Council tax band (A-H) |
| Field | Description |
|---|---|
pricing.currentSale | Current asking price (sales) |
pricing.currentRent | Current asking rent (pcm) |
saleHistory.date | Historical sale dates |
saleHistory.amount | Historical sale prices |
marketStatus.pricePerSqm | Price per square metre |
marketStatus.pricePerSqft | Price per square foot |
| Field | Description |
|---|---|
marketStatus.forSale | Currently listed for sale |
marketStatus.forRent | Currently listed for rent |
marketStatus.sstcDate | Sold subject to contract date |
marketStatus.underOfferDate | Under offer date |
marketStatus.reservedDate | Reserved date (rentals) |
marketStatus.lastOTM | Last on the market date |
marketStatus.backOTM | Back on market flag |
| Field | Description |
|---|---|
epc.currentRating | Current EPC rating (A-G) |
epc.potentialRating | Potential EPC rating |
epc.currentEfficiency | Current efficiency score (1-100) |
epc.potentialEfficiency | Potential efficiency score |
| Field | Description |
|---|---|
leaseYearsRemaining | Years remaining on lease |
charges.serviceCharge.current | Annual service charge |
charges.groundRent.current | Annual ground rent |
| Field | Description |
|---|---|
listings.* | Full listing data (nested) |
listings.publishedDate | When listed |
listings.removedDate | When removed |
listings.priceChange | Price change history |
Endpoint: https://mcp.propbar.co.uk
Transport: Streamable HTTP (MCP 2025-03-26)
Authentication: OAuth 2.1 via Supabase
Add to your claude_desktop_config.json:
{
"mcpServers": {
"propbar": {
"url": "https://mcp.propbar.co.uk"
}
}
}You'll be prompted to authenticate via OAuth when first connecting.
import { Client } from '@modelcontextprotocol/sdk/client/index.js'
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js'
const transport = new StreamableHTTPClientTransport(
new URL('https://mcp.propbar.co.uk'),
{
requestInit: {
headers: {
Authorization: `Bearer ${accessToken}`,
},
},
}
)
const client = new Client({ name: 'my-app', version: '1.0.0' })
await client.connect(transport)
// Get comparables for valuation
const result = await client.callTool('get_comparables', {
coordinates: { latitude: 51.5074, longitude: -0.1278 },
propertyType: 'flat',
bedrooms: 2,
radiusKm: 1,
transactionType: 'sale'
})┌─────────────────────┐ ┌─────────────────────┐
│ search_areas │ │ search_properties │
│ (get areaCode) │ │ (get propertyId) │
└─────────┬───────────┘ └──────────┬──────────┘
│ │
▼ ▼
┌─────────────────────┐ ┌─────────────────────┐
│ Area Tools: │ │ Property Tools: │
│ • get_crime_stats │ │ • get_property_* │
│ • get_schools │ │ • get_comparables │
│ • get_demographics │ │ │
└─────────────────────┘ └─────────────────────┘Flexible inputs: Most tools accept EITHER areaCode OR latitude/longitude coordinates.
{
"tool": "get_comparables",
"arguments": {
"coordinates": { "latitude": 51.5074, "longitude": -0.1278 },
"propertyType": "flat",
"bedrooms": 2,
"radiusKm": 1,
"transactionType": "sale"
}
}Returns: Recent sales, SSTC properties, and current listings with prices, dates, floor areas, EPC ratings, and portal links.
{
"tool": "get_crime_stats",
"arguments": {
"latitude": 53.958,
"longitude": -1.080
}
}{
"tool": "get_schools",
"arguments": {
"latitude": 53.9583,
"longitude": -1.0803,
"radiusMetres": 2000
}
}{
"tool": "get_demographics",
"arguments": {
"areaCode": "E06000014",
"topics": ["ageBands", "ethnicGroup", "tenure"]
}
}Protected Resource Metadata (RFC 9728):
https://mcp.propbar.co.uk/.well-known/oauth-protected-resource
Proprietary - Requires active Propbar subscription.
Keywords: UK property API, automated valuation model, AVM, property comparables, house price data, EPC ratings, UK house prices, property market analysis, MCP server, AI property tools, land registry data
UK property research and valuation tools for AI assistants.