MCP server for querying HM Land Registry Price Paid Data — residential property sales in England & Wales since 1995. Provides search and lookup tools for property transaction records with filtering by postcode, town, district, county, price range, and date range.
Two well-named tools with clear, detailed descriptions (194 - 250 chars each). Input schemas are complete with type definitions and parameter descriptions. However, output schemas are entirely undocumented, LLMs cannot predict response structure or plan downstream calls. Error handling is minimal (generic HTTP error thrown). No input validation guidance for format constraints (e.g., postcode format, date ranges). Tool composition is sound: search_transactions and lookup_postcode are distinct, single-purpose tools. Naming follows verb_noun convention (search_, lookup_). Parameter descriptions include examples and constraints, but lack formal enum/pattern declarations in schema.
Convenience: list the most recent HM Land Registry property sales for a single UK postcode (England & Wales). Returns sale price (£GBP), date, address, property type, tenure and new-build flag, newest sale first. Postcode must be UPPERCASE with a space, e.g. "SW1A 1AA".
Search HM Land Registry Price Paid records — individual residential property sales in England & Wales since 1995. Filter by postcode, town, district, county, price range and sale-date range; sort and page through results. Each record returns price paid (£GBP), sale date, full address, property type, tenure (freehold/leasehold) and new-build flag. Postcodes must be UPPERCASE with a space (e.g. "SW1A 1AA").
Output schemas completely undocumented. LLMs cannot predict response structure (fields, types, pagination). Forces agents to guess at result format and plan blind.
No input validation or error recovery guidance. Generic HTTP error thrown (e.g., 'Land Registry: 400 ...'). LLM cannot self-correct invalid postcode format, date range, or price bounds.
Postcode format constraint ('UPPERCASE with a space') stated in description text only. Not enforced in schema (no pattern regex). LLMs may pass 'sw1a1aa' or 'SW1A1AA' (no space), causing silent API failures.
Date parameters (minDate, maxDate, date) lack format validation. Description says 'YYYY-MM-DD' but no JSON Schema format or pattern enforces it. LLM may pass '2024/01/15' or '15-01-2024'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
No pagination guidance in output. search_transactions accepts pageSize/page but response structure (total count, next_cursor, hasMore) is unknown. LLM cannot determine if more results exist or how to fetch them.