Skip to content

Releases: paulieb89/property-shared

v1.12.0 — EPC browse tooling, Rightmove floor area, address matching fixes

Choose a tag to compare

@paulieb89 paulieb89 released this 17 May 11:52

What's new

Added

  • property_epc_search(postcode) — browse all EPC certificates at a postcode as a slim list (address, rating, floor_area, property_type, floor_level, habitable_rooms, inspection_date, lmk_key). Designed for Rightmove listings where the house number is not shown.
  • epc_certificate(lmk_key) — direct EPC certificate lookup by lmk_key, faster than address-based lookup. Available on both MCP servers.
  • RightmoveListingDetail.floor_area_sqm / floor_area_sqft — numeric floor area from the Rightmove sizings array. Key discriminator for EPC cross-referencing.

Fixed

  • address_matching.extract_number — strips FLAT N, / APARTMENT N, prefixes before extracting building number.
  • address_matching.extract_street — takes 3 words instead of 2, including directional qualifiers (North/South/East/West). Eliminates wrong-street false positives.
  • address_matching.match_epc_address — raises minimum match threshold to 50 when target has no house number.

Full changelog: https://github.com/paulieb89/property-shared/blob/main/CHANGELOG.md

v1.11.0 — MCP primitive refactor, resources, prompts, EPC dual-mode, yield escalation, slim sweep

Choose a tag to compare

@paulieb89 paulieb89 released this 13 May 01:21
163331c

Summary

Combined release of the MCP primitive cleanup work shipped across PRs #11, #12, #13, #14. The fleet's data layer (`property_core`) gains one user-facing improvement; the rest is MCP-server-layer cleanup that affects `property-shared.fly.dev/mcp` and `propertydata.fly.dev/mcp` consumers directly.

What downstream PyPI consumers get from `property-shared 1.11.0`

The only `property_core` change between 1.10.0 and 1.11.0:

  • `calculate_yield()` rental-radius escalation — when no rental listings are found at the requested radius, retry at 1.0mi → 1.5mi → 2.0mi before giving up. Rural postcodes (e.g. DE12 6LL) that previously returned `rental_count: 0` now return useful yields. New `rental_search_radius_miles` field on `YieldAnalysis` surfaces which radius produced the data.

Downstream consumers (`uk-property-mcp`, `property-descriptions-mcp`) can bump their `property-shared` dep to `>=1.11.0` to inherit this.

What MCP-server consumers get (live on Fly)

These are MCP-layer changes already deployed manually to property-shared.fly.dev and propertydata.fly.dev:

Breaking

  • Removed `property_report` MCP tool from both servers; removed `get_property_data` from MCP App. Replaced by a `full_property_analysis` MCP prompt on both servers that instructs the LLM to call the underlying primitive tools explicitly and synthesise.
  • Removed `component_test` and `image_test` dev utilities from MCP App.

Added — MCP Prompts

  • `full_property_analysis` (single-property assessment workflow)
  • `area_comparison` (multi-postcode comparison)
  • `investment_analysis` (buy-to-let evaluation)

Added — MCP Resources (canonical reference data, queryable not computed)

  • `councils://list` — 99-council planning portal registry
  • `council://{code}` — single-council profile by code/slug
  • `sdlt-bands://current` — April 2025 SDLT band schedule
  • `epc-ratings://reference` — A-G EPC band definitions and SAP score ranges

Fixed

  • `property_epc` plain MCP tool now has dual-mode: with address returns the matched cert, without address returns an aggregate summary instead of an arbitrary first row.
  • `_slim` + `exclude_none=True` applied across all plain MCP tools that returned Pydantic models with optional fields. ~40-50% token-cost reduction on tools that return PPDTransaction lists (`property_comps`, `ppd_transactions`, `property_blocks`).

Files of note

  • `property_core/yield_service.py` — the one `property_core` change
  • `property_core/models/report.py` — `rental_search_radius_miles` field added
  • `app/mcp/server.py` — MCP-layer changes (slim, prompts, resources, EPC dual-mode)
  • `property_app/` — MCP App equivalents
  • `CHANGELOG.md` — full breakdown

🤖 Generated with Claude Code

v1.10.0 — comps data parity with prop MCP

Choose a tag to compare

@paulieb89 paulieb89 released this 12 May 09:15

Breaking default changes — PPDService.comps() data parity with the prop MCP server

PPDService.comps() previously returned a raw pass-through of Land Registry data, including commercial properties, bulk-transfer deals (transaction_category='B'), and price outliers. This caused divergence with the production prop MCP server. This release brings the library in line.

Breaking defaults

  • transaction_category defaults to "A" (standard residential sales). Pass None for all categories.
  • property_type=None now means residential set (F+D+S+T). Pass "F"/"D"/"S"/"T"/"O" for one type. Pass "ALL" for the firehose.
  • New filter_outliers param (default False; opt in for IQR-trimmed stats and transactions list).
  • REST /v1/ppd/comps now defaults auto_escalate=true.

Coverage

All consumer interfaces (REST API, plain MCP server, propertydata MCP app, CLI) expose the new params with the new defaults. block_service.analyze_blocks() explicitly opts out to preserve bulk-transfer detection.

Concrete example (NG1 2NS, 24mo)

  • Before: 23 transactions returned (incl. bulk transfers + commercial), median £235k, mean £447k
  • After (default): 3 clean residential category-A sales, median £180k, mean £218k
  • Firehose escape hatch (`property_type="ALL", transaction_category=null`): identical to pre-fix output

See the full CHANGELOG for details.

🤖 Generated with Claude Code

v1.9.0

Choose a tag to compare

@paulieb89 paulieb89 released this 09 May 21:29

What's Changed

  • feat: multimodal image support for rightmove_listing by @paulieb89 in #7

Full Changelog: v1.8.1...v1.9.0

v1.8.1

Choose a tag to compare

@paulieb89 paulieb89 released this 09 May 13:36

Full Changelog: v1.8.0...v1.8.1

v1.8.0

Choose a tag to compare

@paulieb89 paulieb89 released this 09 May 01:11

What's Changed

  • fix: restore plain MCP at /mcp, fix propertydata server-card version by @paulieb89 in #5
  • Add HTTP metrics middleware and Prometheus metrics for request counts and durations by @paulieb89 in #4
  • feat: plain MCP server at /mcp, fix Rightmove scraping by @paulieb89 in #6

New Contributors

Full Changelog: v1.7.4...v1.8.0

v1.7.4

Choose a tag to compare

@paulieb89 paulieb89 released this 03 May 19:05

Full Changelog: v1.7.3...v1.7.4

v1.7.3

Choose a tag to compare

@paulieb89 paulieb89 released this 03 May 05:35

Full Changelog: v1.7.2...v1.7.3

v1.7.2

Choose a tag to compare

@paulieb89 paulieb89 released this 03 May 05:22

Full Changelog: v1.7.1...v1.7.2

v1.7.1

Choose a tag to compare

@paulieb89 paulieb89 released this 03 May 05:13

Full Changelog: v1.6.1...v1.7.1