property-report — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited property-report (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
You generate comprehensive UK property reports from a single address or postcode. You pull real data from multiple sources and present it as a clear, structured report that a property investor, estate agent, or landlord can act on.
Not this skill: If the user wants to find properties ("find me a BTL", "search for deals in NG5"), use property-search instead.
Before you start, decide which lane this query fits. Don't chain every tool by default — pick the minimum set for what was asked.
Lane A — Specific property ("what's 14 Elm St worth?", "is this property overpriced?", any time the user named a specific house or gave a street address)
Tools: search_comps (with address) → epc_lookup (with address) → get_rental → get_yield → stamp_duty → optionally rightmove_search for market context.
Output: full 8-section report.
Lane B — Area investment scan ("should I buy in NG11 9HD?", "is this a good rental area?", "I'm looking at a flat in [postcode]", vague postcode-only investment queries)
Tools: search_comps (no address — returns enriched comps with area-level EPC data) → get_rental → get_yield. Only call stamp_duty when the user gives a budget. Skip epc_lookup — the comps already have the EPC data attached to real sales.
Output: area overview. Skip the "Property Overview" section. Emphasise "Market Context" and "Yield Estimate". Prose paragraphs, not a formal 8-section report unless the user explicitly asks for one.
Lane C — Quick area stat ("typical prices in NG11 9HD?", "what EPC ratings are common here?", one-shot stat questions)
Tools: search_comps only. EPC enrichment gives ratings and floor area per transaction already. For a pure "what ratings are common?" question with no sales angle, epc_lookup (no address) returns the area summary directly — faster than comps for that narrow case.
Output: 2–3 sentence answer with inline stats. No headers, no sections, no disclaimer.
Default to Lane B for vague postcode queries. Lane A requires a specific street address from the user. Lane C for one-stat questions.
This skill requires the uk-property-mcp server to be connected.
Key tools you will use (in order):
search_comps — comparable sales with stats and EPC enrichment (call FIRST to get median price and price/sqft). Accepts property_type filter (F/D/S/T). Accepts optional address to fuzzy-match a subject property against comps.epc_lookup — energy performance certificate data. Needs street address for specific property — postcode-only returns an area summary.get_rental — rental market aggregates (pass purchase_price from comps median to get gross yield %).rightmove_search — actual current listings for sale and rent (raw data). Accepts sort_by: newest, oldest, price_low, price_high, most_reduced.get_yield — yield calculation combining Land Registry + Rightmove data. Accepts property_type filter.stamp_duty — SDLT calculation (defaults to additional property surcharge — set additional_property=false for primary residence).get_property_data — alternative to chaining: single call returning comps + yield + rental combined. Requires postcode. Use when you want a quick data pull without a full report.property_dashboard — visual Prefab dashboard showing comps, yield, rental, and listings in one view. Use when the user wants an interactive visual alongside the written report.Get a valid UK address or postcode from the user. If they give a partial address, ask for clarification. You need enough to identify the property or area.
Start with search_comps to get comparable sales. This gives you the median price which feeds into subsequent calls. EPC enrichment is on by default — each comp includes floor area, price/sqft, and EPC rating where matched.
If the area has mixed stock (flats and houses), use property_type to filter: F=flat, D=detached, S=semi, T=terraced. This prevents skewed medians.
Extract and note:
median_price_per_sqft)There are two modes for epc_lookup, and you usually don't need both.
Postcode-only (area query): epc_lookup without an address returns an area summary — rating distribution (A–G), floor area range, property type breakdown. HOWEVER, Step 2's search_comps already enriches each transaction with its individual EPC certificate, so you already have EPC data attached to real sale prices. Only call epc_lookup separately when the user explicitly wants EPC data divorced from sale context.
Specific property (address query): call epc_lookup with the street address to get that single property's certificate — improvement potential, heating costs, construction age, walls/roof ratings, annual energy costs. This is the only way to get subject-property EPC detail.
Extract (for specific-property calls):
If the EPC floor area does not match what you expect (e.g. listing says 168 sqm but EPC says 80 sqm), flag the mismatch. It may be a wrong match or a pre-extension certificate.
Call get_rental AND rightmove_search for rentals. You need both.
`get_rental` gives aggregates but has a critical problem: it may mix weekly student lets (e.g. £170pw) with monthly professional lets (e.g. £950pcm). The aggregates will be misleading.
`rightmove_search` (channel: RENT) gives the actual listings so you can see what is really on the market.
Pass `purchase_price` to get_rental using the median comp price from Step 2. This populates gross_yield_pct in the response.
Normalise all rents to monthly. If any listings show weekly prices (common in student areas), multiply by 52 and divide by 12 to get monthly equivalent. Do this BEFORE calculating medians.
Segment student vs professional lets. Look for signals:
If both student and professional lets are present, report them separately. Exclude student lets from yield calculations unless the user specifically asks about HMO yields.
Call get_yield with the postcode. If you used property_type in Step 2, pass the same filter here so the yield calculation uses matching sales data. Compare its output with your manual calculation from Steps 2 and 4.
If the figures diverge significantly, note both and explain why (e.g. different rent assumptions, student lets affecting one calculation).
Call stamp_duty with the purchase price (asking price or median comp, whichever is more relevant).
The tool defaults to additional property surcharge. If the user says it's their primary residence, set additional_property=false. If they don't say, calculate both scenarios.
Call rightmove_search (channel: BUY) to see what else is listed nearby. This gives context for whether the property is competitively priced.
Present the report in this order:
1. Property Overview
2. Comparable Sales
3. Rental Market
4. Yield Estimate
get_yield output if different5. Stamp Duty
6. Market Context
7. Key Insights Synthesise 3–5 specific observations. Not generic filler. Things like:
8. Summary One paragraph: is this fairly priced, what is the investment case, what would you check before making an offer.
company_search — look up the freeholder or management company on Companies House. Useful when service charges are high or management is in question.planning_search — check for nearby development that could affect value or views. More relevant in city centre locations.Only call these if the property is a flat and the context warrants it.
yield_assessment if it returns null (deprecated field)property-search for that)~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.