Search / io.github.paulieb89/property-shared
UK Property Data
R0· no sign-inUK property data — Land Registry comps, EPC, Rightmove, rental yields, stamp duty, Companies House
v1.5.1 · active · repository · website · descriptor JSON · versions
Search / io.github.paulieb89/property-shared
R0· no sign-inUK property data — Land Registry comps, EPC, Rightmove, rental yields, stamp duty, Companies House
v1.5.1 · active · repository · website · descriptor JSON · versions
{
"mcpServers": {
"property-shared": {
"type": "http",
"url": "https://property-shared.fly.dev/mcp"
}
}
}claude mcp add --transport http property-shared https://property-shared.fly.dev/mcp[mcp_servers.property-shared]
url = "https://property-shared.fly.dev/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"property-shared": {
"type": "remote",
"url": "https://property-shared.fly.dev/mcp",
"enabled": true
}
}
}{
"mcpServers": {
"property-shared": {
"type": "http",
"url": "https://property-shared.fly.dev/mcp"
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=property-shared&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vcHJvcGVydHktc2hhcmVkLmZseS5kZXYvbWNwIn0%3D"
}{
"servers": {
"property-shared": {
"type": "http",
"url": "https://property-shared.fly.dev/mcp"
}
}
}{
"mcpServers": {
"property-shared": {
"httpUrl": "https://property-shared.fly.dev/mcp"
}
}
}extensions:
"property-shared":
enabled: true
name: "property-shared"
type: streamable_http
uri: "https://property-shared.fly.dev/mcp"
timeout: 300
protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28protocol.statelessonly applies to 2026-07-28 serversprotocol.transportstreamable HTTPprotocol.list_ttlonly applies to 2026-07-28 serversauth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptionsevery tool has a descriptiontools.description_length1 tools have descriptions over 1,024 characters, which crowds the contexttools.schemasevery tool has an object input schematools.annotations14 of 14 tools declare readOnlyHint or destructiveHinttools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: property_epc_summaries (destructiveHint, idempotentHint, openWorldHint); epc_certificate (destructiveHint, idempotentHint, openWorldHint); property_blocks (destructiveHint, idempotentHint, openWorldHint); …tools.token_costabout 2,680 tokens to load every tooltools.api_dumptools are not a one-to-one API dumpstability.changes28 tool changes in 30 daysstability.rug_pullno tool changed its meaning under the same namedeps.known_vulns2 advisories of lower severity or without a published fix: GHSA-4xgf-cpjx-pc3j in [email protected] (direct, fixed in 2.14.2), GHSA-gc5v-m9x4-r6x2 in [email protected] (direct, fixed in 2.33.0)deps.mcp_sdk_versionthe official MCP SDK is not in the dependency graphdeps.resolvable[email protected] resolved: 22 packagesppd_transactionsaddedLand 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`.
planning_searchaddedFind the council planning portal URL for a postcode.
company_searchaddedSearch Companies House for a company by name.
property_blocksaddedProperty block analysis — identify buildings with multiple flat sales (block-buy opportunities).
rightmove_listingaddedFull 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.
rightmove_searchaddedFetch Rightmove listings for a postcode. listing_type: "sale" or "rent". sort_by: "newest", "most_reduced", "price_asc", "price_desc". Images are excluded from results.
stamp_dutyaddedUK Stamp Duty Land Tax (SDLT) calculation with full breakdown.
epc_certificateaddedFetch 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.
property_epc_summariesaddedList 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.
property_epc_searchaddedDEPRECATED — 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.
Showing the latest 10. Full history: list_changes · trend: quality JSON.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+repository +namespace-matches-repo +website +reachable +uptime-100% -stale-182d
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
[email protected] PyPI21 dependencies, resolved · advisories checked 2026-10-19
| advisory | severity | package | fixed in |
|---|---|---|---|
| GHSA-4xgf-cpjx-pc3jpydantic-settings: NestedSecretsSettingsSource follows symlinks outside secrets_dir, enabling local file read and bypassing secrets_dir_max_size | moderate | [email protected]direct | fixed in 2.14.2 |
| GHSA-gc5v-m9x4-r6x2Requests has Insecure Temp File Reuse in its extract_zipped_paths() utility function | moderate | [email protected]direct | fixed in 2.33.0 |
Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0. The graph is what a clean install of this version resolves today; nothing was installed or run. How it is checked.
| remote | auth | reachable | uptime 30d | p50 | protocol | last ok |
|---|---|---|---|---|---|---|
https://property-shared.fly.dev/mcp streamable-http | none | yes | 100% | 254 ms | 2025-11-25 | 2026-10-19 |
| package | registry | version | runtime | secrets |
|---|---|---|---|---|
property-shared | pypi | 1.5.1 | uvx |
company_searchread-only | Search Companies House for a company by name. |
epc_certificateread-only | Fetch 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. |
planning_searchread-only | Find the council planning portal URL for a postcode. |
ppd_transactionsread-only | Land 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`. |
property_blocksread-only | Property block analysis — identify buildings with multiple flat sales (block-buy opportunities). |
property_compsread-only | 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. |
property_epcread-only | 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 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. |
property_epc_searchread-only | DEPRECATED — 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. |
property_epc_summariesread-only | List 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. |
property_yieldread-only | 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. |
rental_analysisread-only | Rental 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. |
rightmove_listingread-only | Full 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. |
rightmove_searchread-only | 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. |
stamp_dutyread-only | UK Stamp Duty Land Tax (SDLT) calculation with full breakdown. |
Schemas: list_tools.
{
"name": "io.github.paulieb89/property-shared",
"title": "UK Property Data",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"remotes": [
{
"url": "https://property-shared.fly.dev/mcp",
"type": "streamable-http"
}
],
"version": "1.5.1",
"packages": [
{
"version": "1.5.1",
"transport": {
"type": "stdio"
},
"identifier": "property-shared",
"runtimeHint": "uvx",
"registryType": "pypi"
}
],
"repository": {
"url": "https://github.com/paulieb89/property-shared",
"source": "github"
},
"websiteUrl": "https://bouch.dev/products/property-report",
"description": "UK property data — Land Registry comps, EPC, Rightmove, rental yields, stamp duty, Companies House"
}