homedata-mcp
This server gives AI assistants access to UK property and neighbourhood data through MCP tools.
Search UK addresses by free text and get UPRNs for property lookups.
Look up canonical property records by UPRN, including address, council, tenure and cross-references.
Batch-lookup up to 50 properties in one call.
Fetch Energy Performance Certificates (EPC), flood risk, council tax band (currently returns a "coming soon" response), sales history, planning applications, and comparable sold prices.
Search live/historic property listings linked to a UPRN.
Get local area data by postcode: demographics, crime, schools, broadband, transport, and a combined postcode profile.
Help users start a Homedata signup or check whether an API key is configured, without spending API credits.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@homedata-mcplook up property 100021421083"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Homedata MCP server
UK property data as tools for AI assistants. Ask Claude, Cursor, Codex or any Model Context Protocol client about an address and it can look up the property record, EPC, council tax, flood and other environmental risks, planning, schools, broadband, crime, local amenities and area price trends through the Homedata API.
The tools are exactly the self-serve endpoints of the Homedata Developer Playground: the same names, the same arguments and the same prices.
Install
Requires Python 3.10 or newer.
pip install homedata-mcpor run it without installing, with uv:
uvx homedata-mcpRelated MCP server: Property Price Search MCP Server
Get an API key
Create an account at homedata.co.uk/register, verify your email, and copy your key from the developer dashboard. Calls are paid for in tokens from a prepaid balance; see homedata.co.uk/pricing. Every tool's description states what it costs, and every call reports what it actually cost (see What a call costs).
Without a key the server still starts, with two helpers,
start_homedata_signup and check_homedata_api_key, so your assistant can
walk you through getting one. Neither helper calls the API.
Connect it to your assistant
Most clients take the same command, arguments and environment. For Claude
Desktop, add this to claude_desktop_config.json and restart the app:
{
"mcpServers": {
"homedata": {
"command": "uvx",
"args": ["homedata-mcp"],
"env": { "HOMEDATA_API_KEY": "your_key" }
}
}
}With pip install homedata-mcp, use "command": "homedata-mcp" and no args.
Claude Code:
claude mcp add homedata --env HOMEDATA_API_KEY=your_key -- uvx homedata-mcpStep-by-step guides for Claude Desktop, Claude Code, Cursor, Codex CLI, Windsurf, Cline, Continue.dev and Zed are at homedata.co.uk/mcp.
Using the tools
Start with address_match to match an address and postcode to a UPRN, then use the
property tools with that UPRN. For a whole property, one tier call is cheaper
than many small ones: property_base, then property_core (the usual full
picture), then property_complete. property_discovery costs 1 token and
shows what a property has before you commit to a tier.
Tool | Tokens | What it returns |
| 5 | Match a submitted UK street address and postcode to a UPRN. A 200 response returns the address-level retrieve body plus address_resolution. |
| 2 | List every registered address at a UK postcode, with the UPRN for each one. |
| 5 | Every amenity group near a property in one response: food, education, healthcare, financial, civic, worship, culture, convenience, green spaces, transport and shops. |
| 1 | Civic places near a property: post offices, town halls, courthouses, fire and police stations, community centres. |
| 1 | Everyday conveniences near a property: public toilets, charging points, parcel lockers and similar. |
| 1 | Culture and leisure near a property: theatres, cinemas, music venues, museums, galleries and attractions. |
| 1 | Education near a property: schools, nurseries, colleges, universities, childcare and libraries. For Ofsted ratings and pupil numbers use schools. |
| 1 | Banks, cash machines and money services near a property. |
| 1 | Places to eat and drink near a property: cafes, restaurants, pubs, bars, takeaways. |
| 1 | Green space near a property: parks, playgrounds, gardens, nature reserves, commons and sports pitches. |
| 1 | Health services near a property as mapped locally: doctors, dentists, clinics, hospitals, pharmacies and care homes. For regulator-registered records use healthcare_all and its per-type tools. |
| 1 | Shops near a property, from supermarkets to specialist retailers. |
| 1 | Transport stops near a property: bus stops, railway stations, tram stops and ferry terminals. |
| 1 | Places of worship near a property. |
| 1 | How a property was built: construction age band, main construction material, and whether it has a basement. |
| 1 | Measurements for a property: footprint area in square metres, building height, estimated volume and predicted floor area. |
| 1 | Energy Performance Certificate headline for a property: current and potential efficiency rating, EPC floor area and the date of the last assessment. |
| 1 | Improvements recommended by a property's EPC assessment, each with estimated minimum and maximum cost. |
| 1 | Whether a property has a garden, and of what kind. |
| 1 | Plot size in square metres for a property. Houses only: flats and maisonettes have no plot, and those return an error with nothing charged. |
| 1 | Whether a property has parking, and of what kind: driveway, off-street, garage and so on. |
| 1 | A property's roof: material, shape, and whether solar panels are fitted. |
| 1 | Room counts for a property: bedrooms, bathrooms, habitable rooms and heated rooms. |
| 1 | Search UK administrative areas by name and get their boundary id, for tools that take one. |
| 1 | Broadband availability at a postcode: average and maximum download and upload speeds, superfast, ultrafast, gigabit and full-fibre coverage, and how many premises are covered. From Ofcom Connected Nations. |
| free | Work out a mortgage from price, deposit, rate and term: monthly payment, total repayment, total interest, and loan-to-value and loan-to-income ratios. |
| free | Work out Stamp Duty Land Tax for England and Northern Ireland: total tax, effective rate and a band-by-band breakdown, for a main residence, a first-time buyer or an additional property. |
| 3 | Council tax band for a property, with the billing authority name and its official code. For the yearly and monthly charge in pounds, use council_tax_full instead. |
| 5 | The full council tax record for a property: band, billing authority and its official code, this year's yearly and monthly charge in pounds, the 1991 valuation bounds behind the band, and the fiscal year. |
| 1 | Recorded crime near a postcode or coordinates, by category and month, from Police UK. |
| 1 | Census 2021 profile for the area around a postcode: population, tenure, age bands, ethnicity, occupation, household size and car ownership, plus deprivation where available. |
| 1 | Index of Multiple Deprivation scores for a postcode, across income, employment, education, health, crime, housing and environment. England only. |
| 1 | Petrol stations and EV charging points near a property, each tagged with which it is. |
| 1 | EV charging points near a property. |
| 1 | Petrol stations near a property. |
| 3 | Health services near a property: regulator-registered GPs, dentists and hospitals, plus pharmacies. Registered entries carry name, address, postcode, region, distance and a link to the official register record. Registered records cover England. |
| 1 | Registered dental practices near a property, with name, address, postcode, region, distance and a link to the official register record. England only. |
| 1 | Registered GP practices near a property, with name, address, postcode, region, distance and a link to the official register record. England only. |
| 1 | Registered hospitals near a property, with name, address, postcode, region, distance and a link to the official register record. England only. |
| 1 | Pharmacies near a property, with name, address, phone and website where known. |
| 3 | Listed buildings within a radius of a postcode: Grade I, II* and II entries with name, location, listing date and a link to the official record. |
| 20 | Reveal a listing’s UPRN and full address using its listing UUID. |
| 5 | Planning applications near a postcode or coordinates: type, status, description and decision date, with filters for recency, type and status. |
| 1 | One-call summary of a postcode: deprivation, crime, average property price, nearby schools, transport and broadband. Cheaper than calling those tools separately. The first call for a postcode is slow, because the parts are gathered and combined when you ask for them; the result is then cached, so asking again for the same postcode is fast. Wait for the first call rather than retrying it — retrying abandons the work already in progress and starts it over. |
| 1 | How property prices are spread across an outcode area: percentiles, median and transaction counts by property type. |
| 1 | Capital growth for an outcode area: annual growth rate, returns over one, three, five and ten years, and a historical price index, from Land Registry sold prices. |
| 1 | Average property prices over time for an outcode area. |
| 5 | Address-only record for a property: full address, postcode, coordinates and the standard address identifiers. The cheapest property tier, for address verification, form pre-fill and matching. |
| 10 | The house-hunter view of a property: address, rooms, EPC rating, last sale, construction, dimensions, garden, parking and title basics, in one call. |
| 50 | Everything held on a property in one call: the Core record plus the full council tax charge, full title, environmental risks, deprivation, planning history and area price trends. |
| 25 | The full listing view of a property: everything in Base plus council tax band, flood risk, schools, broadband, crime, demographics, solar potential, confirmed sales and planning constraints. The usual starting point. |
| 1 + add-ons | Build your own property record: the base record plus only the add-ons you ask for, so you pay for exactly what you use. Call property_discovery first to see which add-ons a property has. |
| 1 | The cheap first call for a property: which data is available for it, what each add-on costs, and the shortcuts to each tier. Also the quickest way to check whether a UPRN is one we hold. |
| 10 | Land Registry title records for a property: tenure, title number and registered owner where held. |
| 20 | Return the event timeline for a sale ID or listing UUID, optionally filtered and ordered. |
| 1; 5 when | Environmental risk screening for a property: flood, radon, noise, landfill, coal and other mining, invasive plants and air quality. Ask for one hazard, or for all of them in a single response. |
| 1 | Schools near a postcode, with Ofsted rating, phase, pupil numbers and distance, from the Department for Education register. England only. |
| 5 | Solar potential for a property: usable roof area, estimated yearly generation, savings, payback period and carbon saved. |
| none | Get a Homedata API key so the property data tools can be used: returns the sign-up link and the steps to follow. Makes no API call. |
| none | Check whether this server has a Homedata API key configured and what to do next if it has not. Makes no API call, so it never spends anything. |
What a call costs
Each tool's description states its price in tokens. When the API reports what a call actually cost, the tool result carries it in its metadata:
{ "homedata": { "tokens_charged": "25", "tokens_balance": "9975" } }Arguments are checked before anything is sent: a call with a missing, malformed or unknown argument is refused by the server and never reaches the API.
Command line
The package also installs homedata, built from the same tool list:
homedata tools # every tool and its price
homedata address_match --address "10 Downing Street" --postcode "SW1A 2AA"
homedata property_core --uprn 100023336956 --field epc
homedata calc_mortgage --price 300000 --deposit 30000 --rate 4.5 --term 25--field <dotted.path> prints one value, --compact prints one line of JSON,
and the tokens a call cost are printed to stderr. The calculators are free and
need no key.
Configuration
Variable | Required | Default |
| for everything except the calculators and the signup helpers | none |
| no |
|
How the tool list is kept right
homedata_mcp/manifest/tools.json is generated from the Developer Playground
catalogue by scripts/generate-manifest.mjs, and every tool is built from it.
The test suite fails if the server's tools, arguments, requests or stated
prices differ from the manifest, and a weekly check fails if the Playground's
public catalogue has moved on since the manifest was generated. See
CONTRIBUTING.md.
Development
git clone https://github.com/wehomemove/homedata-mcp.git
cd homedata-mcp
python -m venv .venv && . .venv/bin/activate
pip install -e '.[dev]'
pytestLicence
MIT. See LICENSE.
Available Tools
18 toolsbatch_property_lookupA
Look up multiple properties in a single round-trip (max 50 UPRNs).
Use this in preference to looping lookup_property when you have
more than 2-3 UPRNs - it is significantly cheaper in API credits.
| Name | Required | Description | Default |
|---|---|---|---|
| uprns | Yes | List of UPRNs (each a 12-digit string). Capped at 50. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions efficiency and batch behavior, but does not disclose error handling, limit enforcement, or read-only status. Partially transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no waste. First sentence front-loads purpose, second provides usage guidance. Ideal conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (not shown), the description adequately covers purpose, usage, and constraints. No missing context for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter description (list of UPRNs, capped at 50). The description repeats the cap but adds no new meaning beyond the schema. Baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Look up multiple properties in a single round-trip (max 50 UPRNs).' It specifies verb, resource, and constraints, distinguishing it from 'lookup_property'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance: 'Use this in preference to looping lookup_property when you have more than 2-3 UPRNs - it is significantly cheaper in API credits.' This tells when to use and when not to, with a clear reason.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_homedata_api_keyA
Check whether the user's HOMEDATA_API_KEY is set + working.
Use this:
before recommending Homedata data tools, to know if they're available
after the user runs start_homedata_signup, to confirm they've completed verification + set the env var (after MCP server restart)
if a data tool returned an unauthorised / quota error, to diagnose
Returns a structured status the AI agent can reason about. NO API key material is returned — only a 6-character prefix for diagnostic purposes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description fully discloses behavior: returns a structured status, no API key material is returned except a 6-character prefix for diagnostics. This transparency is sufficient for the tool's simple nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear bullet-like structure, front-loading the action and then listing use cases. Every sentence adds value without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter diagnostic tool with an output schema, the description covers the purpose, usage scenarios, and return value characteristics comprehensively. No gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the input schema provides full coverage. The description adds value by explaining the purpose and output, which is more than adequate for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool checks whether the HOMEDATA_API_KEY is set and working. It uses a specific verb ('check') and resource ('API key'), and differentiates itself from sibling data tools by being a diagnostic/prerequisite check.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit use cases: before recommending Homedata tools, after signup to confirm, and for error diagnosis. This clearly guides when to use this tool versus alternatives like starting signup or using data tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_broadbandA
Return Ofcom broadband availability and speeds for a postcode.
Includes max download / upload speeds, technology (FTTP, FTTC, etc.) and superfast / ultrafast / gigabit availability.
| Name | Required | Description | Default |
|---|---|---|---|
| postcode | Yes | UK postcode. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes a read-like operation with no side effects, but does not mention potential limitations such as rate limits, data freshness, or authentication requirements. It is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states the main purpose, the second elaborates on included data. It is front-loaded, concise, and every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema, the description covers the key output aspects (speeds, technology, availability). For a simple one-parameter lookup tool, it provides sufficient context for an agent to understand the tool's capability, though it could mention input validation (e.g., valid UK postcode format).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single 'postcode' parameter, so the baseline is 3. The description adds context about the returned data but does not add parameter-specific semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns Ofcom broadband availability and speeds for a postcode, explicitly listing key data like download/upload speeds, technology, and availability categories. This distinguishes it from sibling tools that deal with property, crime, or demographics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when broadband data for a postcode is needed, but provides no explicit when-not-to-use guidance or alternatives. Given the sibling tools are in different domains, the context is clear, but no additional usage constraints are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_comparablesA
Find comparable recently-sold properties near a subject property.
Useful for valuation work - returns nearest sales with price, date and
property characteristics for triangulating a market value. The endpoint
uses geographic proximity (PostGIS spatial query) rather than a fixed
radius, and returns the count closest properties with either a
sold date or a first-listing date in the past year.
| Name | Required | Description | Default |
|---|---|---|---|
| uprn | Yes | Unique Property Reference Number (the subject property). | |
| count | No | Number of comparables to return (default 20, max 200). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. It discloses use of PostGIS spatial query, a date filter (sold or first-listing in past year), and count limits, which are valuable behavioral traits. It does not explicitly state read-only behavior, but the nature of the tool implies it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences: first states the purpose, second explains the use case, third provides technical implementation details. It is front-loaded with the essential action and concise without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only 2 parameters, an output schema, and no annotations, the description covers the core functionality, methodology, and key constraints. It lacks mention of error handling or authentication, but for a query tool, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes the parameters well (100% coverage). The description adds value by explaining that 'count' refers to the number of closest properties and that results include properties with a sold date or first-listing date within the past year, beyond what schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Find comparable recently-sold properties near a subject property' with a specific verb and resource, and the context of valuation work. However, it does not explicitly differentiate from the sibling tool 'get_property_sales', which might serve a similar purpose, so it misses a direct distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context for when to use the tool ('Useful for valuation work') but does not include explicit when-not-to-use instructions or mention alternatives among siblings. The guidance is implied but not comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_crimeB
Return data.police.uk crime counts and categories for a postcode.
| Name | Required | Description | Default |
|---|---|---|---|
| postcode | Yes | UK postcode. | |
| date | No | Optional reporting month in ``YYYY-MM`` format. Defaults to the latest available month. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose behavioral traits. It only states it returns data, but omits critical details like read-only nature, rate limits, data freshness, or error handling for an external API.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is efficient and front-loaded with the primary action. However, it is somewhat terse, missing details that could be included without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the tool is simple with only two parameters, the description lacks context about the output (crime categories, time range) and the external source's behavior. The presence of an output schema mitigates this slightly, but more details would help.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented. The description adds no additional meaning beyond the schema; it does not explain the output format or any parameter interdependencies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns crime counts and categories from data.police.uk for a given postcode, with a specific verb and resource. It is distinct from sibling tools, which are all property-related.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, constraints, or related tools, leaving the agent without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_demographicsA
Return ONS Census 2021 demographic profile for a postcode.
Includes population, age bands, household composition, ethnicity, tenure, occupation and qualifications - all keyed to the postcode's output area.
| Name | Required | Description | Default |
|---|---|---|---|
| postcode | Yes | UK postcode (any common format, e.g. "SW1A 1AA" or "sw1a1aa"). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description transparently lists the demographic categories returned, giving a clear picture of the output. It notes the data is from the 2021 Census and keyed to the output area. However, it does not mention potential limitations like data staleness or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: first states the action and target, second lists contents. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists (implied), the description provides sufficient context on what data is returned. It explains the data is aggregated to the output area, which is useful. Could mention that the data is specific to 2021 UK Census, but overall complete for a specialized lookup tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the single parameter (postcode) with format details. The description adds no additional parameter context beyond what is in the schema, so it meets the baseline for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns an ONS Census 2021 demographic profile for a postcode, listing specific categories (population, age bands, etc.). This distinguishes it from sibling tools like get_crime or get_broadband, which return different data types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is provided. The purpose is implied, but there are no comparisons or exclusions regarding alternatives like get_postcode_profile.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_planning_applicationsA
Search planning applications associated with (or near) a UPRN.
Returns reference, decision, decision date, application type and a description summary. Aggregated from local authority planning portals.
| Name | Required | Description | Default |
|---|---|---|---|
| uprn | Yes | Unique Property Reference Number. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description only mentions aggregation from local authority portals, but lacks details on rate limits, authentication, or side effects. The burden is high, and coverage is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first states purpose, second lists output fields and data source. No wasted words, front-loaded with key action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description sufficiently covers return fields and data source. Single parameter is simple. Minor gap: no mention of result limits or pagination.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and defines UPRN well. Description adds nuance of 'or near' which enhances clarity slightly. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches planning applications by UPRN, specifying it returns key fields and is aggregated. No sibling tool covers planning applications, so it is well-distinguished.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (search by UPRN) but does not explicitly state when to use or alternatives. No context on exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_postcode_profileA
Return a one-shot rollup for a postcode.
Bundles headline demographics, crime rate, broadband, average sale price and school count for quick area appraisals - cheaper than calling each tool individually.
| Name | Required | Description | Default |
|---|---|---|---|
| postcode | Yes | UK postcode. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It describes the output as a rollup but does not mention error handling (invalid postcode), cost implications beyond 'cheaper', or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no fluff. First sentence states purpose, second provides detail and benefit. Everything earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema present, description is adequate. Lists all major data categories included. Could mention geographic scope (postcode area) but not necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'postcode', described as 'UK postcode.' The description adds no additional semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Return' and resource 'rollup for a postcode', listing bundled data types (demographics, crime, etc.). It clearly distinguishes from sibling tools by emphasizing the bundling aspect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states it is 'cheaper than calling each tool individually', guiding when to use the rollup. However, does not explicitly state when not to use it (e.g., if deep detail is needed).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_property_salesA
Return the full HM Land Registry sale history for a property.
Each event includes sale date, price, transaction type (full / additional / standard) and category (residential / commercial).
| Name | Required | Description | Default |
|---|---|---|---|
| uprn | Yes | Unique Property Reference Number. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the data returned but lacks behavioral traits such as read-only nature, authentication needs, rate limits, or error handling. The description is adequate but not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no waste. The first sentence states the purpose, and the second lists the fields. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (1 param) and presence of an output schema, the description covers purpose and returned fields. Could additionally mention error cases or usage notes, but it is largely complete for a straightforward tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the uprn parameter described as 'Unique Property Reference Number'. The description adds that the sale history is for a property linked to uprn but does not add significant semantic value beyond the schema's description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns sale history for a property, listing specific fields (sale date, price, transaction type, category). It uses a specific verb ('Return') and resource ('full HM Land Registry sale history'), distinguishing it from siblings that return current property details or comparables.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for obtaining sale history but does not explicitly state when to use this tool versus alternatives like 'lookup_property' or 'get_comparables'. No exclusions or alternative recommendations are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_schoolsB
Find schools within a radius of a property, with Ofsted ratings.
Returns name, phase (primary/secondary/special), age range, distance, Ofsted grade and last inspection date.
| Name | Required | Description | Default |
|---|---|---|---|
| uprn | Yes | Unique Property Reference Number (the centre point). | |
| radius_m | No | Search radius in metres. Defaults to 1000. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must fully disclose behavior. It only describes the operation as a read (find schools) and does not mention idempotency, permissions, rate limits, or other important behavioral aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences and a list of return fields, all relevant. No fluff, but slightly more detail could be added without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (not shown but indicated), the description provides a good overview. However, it lacks edge-case details like empty results or grade ranges.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds minimal value beyond the schema. It restates the search radius concept but does not provide additional meaning for either parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool finds schools within a radius with Ofsted ratings, listing specific output fields. The name 'get_schools' aligns perfectly, and it is distinct from sibling tools like lookup_property or search_address.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives. The description only explains what it does, without mentioning when not to use it or suggesting other tools for different needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transportB
Find transport nodes (rail, tube, bus stops) near a property.
| Name | Required | Description | Default |
|---|---|---|---|
| uprn | Yes | Unique Property Reference Number. | |
| radius_m | No | Search radius in metres. Defaults to 800 (roughly a 10-minute walk). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description alone must convey behavioral traits. It only states the basic action without details on data freshness, limitations, output format, or whether the search includes coordinates. This is insufficient for full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that is concise and to the point. However, it could benefit from a bit more detail without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (2 parameters, output schema exists), the description provides the core purpose. However, it lacks behavioral context and does not explain the return value, making it only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%; the description adds no additional meaning beyond what the input schema already provides for 'uprn' and 'radius_m'. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool finds transport nodes (rail, tube, bus stops) near a property. It uses a specific verb 'Find' and resource 'transport nodes', and distinguishes from sibling tools like get_crime or get_schools by focusing on transit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when transport information near a property is needed, but provides no explicit when-to-use or when-not-to-use guidance. No alternatives are mentioned, which is adequate given the distinct purpose relative to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_council_taxA
Get the VOA council tax band (A-H) and billing authority for a UPRN.
NOTE: Council tax lookup is in development and not yet production-ready. This tool returns a clear "coming soon" response without hitting the API so callers do not consume credits on an unavailable endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| uprn | Yes | Unique Property Reference Number. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses that the tool does not perform an actual API call but returns a fixed 'coming soon' response, and explains the reason (avoiding credit consumption on an unavailable endpoint). This is transparent about the tool's current behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two short sentences: the first clearly states the purpose, and the second explains the current non-functional behavior. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no real functionality, the description is complete. It explains what the tool does, its current state, and the behavior. An output schema exists, so return values do not need further explanation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'uprn' is described in the schema as 'Unique Property Reference Number' with 100% coverage. The description does not add additional meaning beyond what the schema provides, meeting the baseline but not exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'VOA council tax band (A-H) and billing authority for a UPRN'. It explicitly mentions the output (band and authority) and the required input (UPRN). This distinguishes it from sibling tools like 'lookup_epc' or 'lookup_property'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description notes that the tool is 'in development and not yet production-ready' and returns a 'coming soon' response without hitting the API, informing agents that it is safe to call but does not provide real data. However, it does not explicitly mention when to use it versus alternatives or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_epcA
Fetch the latest EPC (Energy Performance Certificate) for a UPRN.
Returns current/potential efficiency rating (A-G), CO2 emissions,
floor area, primary heating, glazing, walls, roof, insulation, and
the assessment date. Returns {"error": ...} if no EPC exists.
| Name | Required | Description | Default |
|---|---|---|---|
| uprn | Yes | Unique Property Reference Number. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It mentions the error case for missing EPC, but lacks details on rate limits, data freshness, or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no extraneous information. Purpose is front-loaded, and details are compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and a simple one-parameter input, the description covers purpose, parameter, and error handling. No missing critical context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'uprn' is described in the schema as 'Unique Property Reference Number.' The description adds no additional meaning beyond the schema, and coverage is 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the tool fetches the latest EPC for a UPRN, listing key returned fields. This differentiates it from sibling tools like lookup_council_tax or lookup_flood_risk.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or comparison with other property lookup tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_flood_riskA
Get Environment Agency flood risk classification for a property.
Returns risk bands for rivers/sea and surface water (Very Low, Low, Medium, High), plus distance to nearest watercourse where available.
| Name | Required | Description | Default |
|---|---|---|---|
| uprn | Yes | Unique Property Reference Number. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes output content (risk bands and distance) but lacks disclosures about rate limits, authentication, or error handling. Without annotations, a simple read tool gets a baseline 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundancy. First sentence states purpose, second details output. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and a single parameter, the description covers the main output elements. Lacks mention of error states, but sufficient for a simple lookup tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the tool description does not add meaning beyond the existing schema description for 'uprn'. Baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'Get', the resource 'flood risk classification', and the source 'Environment Agency'. Distinguishes from sibling tools, none of which address flood risk.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus alternatives, no prerequisites, and no conditions for when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_propertyA
Look up the canonical Homedata property record for a single UPRN.
Returns address, geometry, council, tenure, build characteristics and cross-reference identifiers (LR title, USRN, postcode). Use this as the entry point when you need ground-truth metadata for a property.
| Name | Required | Description | Default |
|---|---|---|---|
| uprn | Yes | Unique Property Reference Number (12-digit string). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It clearly indicates a read-only lookup operation returning multiple data categories. No mention of side effects or authorization, but for a simple property lookup, this is adequate and not misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with front-loaded purpose. Every sentence adds value: first states action, second lists returns and usage guidance. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description doesn't need to detail return structure. It lists all major return categories. The tool has one required param, and the description is complete. Siblings are many, but the description clearly positions this as the primary entry point.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single parameter uprn with schema description 'Unique Property Reference Number (12-digit string)'. Description adds context: it's a single UPRN, and the tool returns the canonical record. This enhances the parameter's meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description explicitly states action ('Look up the canonical Homedata property record for a single UPRN') and lists return fields (address, geometry, council, etc.). Positions itself as the entry point, distinguishing it from sibling tools like batch_property_lookup and search_address.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes explicit guidance: 'Use this as the entry point when you need ground-truth metadata for a property.' This tells the agent when to use it. While it doesn't list exclusions or alternatives, the context is clear enough to differentiate from siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_addressA
Free-text address search across the full 29M-record UK address base.
Returns candidate addresses with their UPRN - use the UPRN with the
other lookup_* / get_* tools.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Free-text fragment, e.g. "10 Downing Street" or "Flat 4a Mill House". | |
| postcode | No | Optional postcode to constrain the search. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the large database size and that it returns candidates with UPRN. However, it lacks details on rate limits, pagination, or any potential side effects, leaving gaps for a search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with action and scope, no wasted words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only two parameters and an output schema likely covering return values, the description adequately explains purpose and next steps. It covers the main use case but could mention result limitations like pagination.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description confirms the free-text nature and suggests postcode constrains search, but adds no new parameter meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it performs a free-text address search across a 29M-record database and returns candidates with UPRN. It implicitly distinguishes from sibling lookup/get tools by suggesting the UPRN is used with those, but does not explicitly name a sibling for differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates the tool is for finding addresses and obtaining UPRNs for subsequent lookups, providing clear context. However, it does not explicitly state when not to use it (e.g., if you already have a UPRN) or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_property_listingsA
Find live and historic sales/lettings listings linked to a UPRN.
Returns asking price, status (is_live), agent details, listing
date, and marketing description. Sourced from Home.co.uk's panel of
portal partners (30+ years of data).
| Name | Required | Description | Default |
|---|---|---|---|
| uprn | Yes | Unique Property Reference Number. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description provides key behavioral context: it returns historical and current data from a specific source, includes a marker for live status, and lists the output fields. It does not mention error handling, rate limits, or authorization, but for a read-only search tool, the disclosure is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no extraneous information. It front-loads the action ('Find live and historic sales/lettings listings') and efficiently lists the return fields and source. Every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, output schema present), the description covers purpose, input, output, and data source. It lacks explicit usage guidance and differentiation from siblings, but overall it is nearly complete for an agent to understand and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, 'uprn', is described in the schema as 'Unique Property Reference Number.' The description does not add additional semantic context beyond what the schema provides. Since schema coverage is 100%, a score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: finding live and historic sales/lettings listings linked to a UPRN. It specifies the returned fields (asking price, status, agent details, etc.) and the data source (Home.co.uk's panel of portal partners with 30+ years of data). This distinguishes it from sibling tools like 'get_property_sales' or 'lookup_property' which may focus on specific aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly suggests use when you need both sales and lettings listings for a UPRN, but it does not explicitly state when to use this tool versus alternatives like 'get_property_sales' or 'get_comparables'. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_homedata_signupA
Begin a Homedata signup so the user can get an API key for UK property data.
Homedata is the UK property data API: 29M UK addresses with UPRNs, EPC, sale history, planning, flood risk, council tax, demographics, crime, schools, broadband, and transport. Free tier is 100 calls per month with no credit card required.
This tool returns the signup URL and the exact steps the user needs to take. After signing up + verifying their email, they copy their API key from the dashboard and set HOMEDATA_API_KEY in their environment — at which point all 16 data tools become available.
| Name | Required | Description | Default |
|---|---|---|---|
| No | Optional. If provided, included in the response so the user knows which inbox to check for verification. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries full burden. It discloses the tool returns a signup URL and steps, and that it does not have destructive effects. It is transparent about the signup process and prerequisites, though it could mention that the tool itself does not modify any data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with three concise paragraphs: purpose, background, and next steps. It is front-loaded with the core action. Minor reduction possible, but overall efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one optional parameter, no required parameters, and an output schema not shown but described), the description covers all necessary aspects: purpose, context, output, and post-usage steps. It is fully complete for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers 100% of parameters with a description for 'email' (optional). The tool description adds value by explaining that if provided, it helps the user know which inbox to check for verification, which enriches the schema's default description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Begin a Homedata signup' and explains it helps the user get an API key for UK property data. This is distinct from the sibling tools which are data lookups, so purpose is unambiguous and differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool (to start signing up for a Homedata API key) and provides next steps (email verification, setting environment variable). However, it does not explicitly state when not to use it, though the sibling context makes that clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
18 tool updates
v0.3.0- First observed
batch_property_lookup - First observed
check_homedata_api_key - First observed
get_broadband - First observed
get_comparables - First observed
get_crime - First observed
get_demographics - First observed
get_planning_applications - First observed
get_postcode_profile - First observed
get_property_sales - First observed
get_schools - First observed
get_transport - First observed
lookup_council_tax - First observed
lookup_epc - First observed
lookup_flood_risk - First observed
lookup_property - First observed
search_address - First observed
search_property_listings - First observed
start_homedata_signup
TDQS
Scored across 18 tools
Each tool targets a distinct resource or action (e.g., demographics, crime, broadband, sales, planning, EPC, flood risk). The only potential overlap is get_postcode_profile bundling multiple data sources, but its purpose is clearly a convenience rollup, not a substitute for individual queries.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., lookup_council_tax, get_broadband, search_address). The use of 'get_' for broad data and 'lookup_' for property-specific records is a subtle but consistent distinction. No mixing of conventions.
With 18 tools, the set is slightly above the ideal 3-15 range but still reasonable for the breadth of UK property data covered. Each tool serves a specific purpose, and none appear redundant.
The tool surface covers the full lifecycle of property data queries: address search, property details, sales, listings, planning, EPC, flood risk, council tax (noted as in development), demographics, crime, broadband, schools, transport, and API management. No obvious gaps for the stated domain.
Maintenance
Related MCP Connectors
UK area & property intelligence for AI agents: reports, EPC, comparables, with source provenance.
UK property research tools - crime stats, schools, demographics, valuations for AI.
UK property data — Land Registry comps, EPC, Rightmove, rental yields, stamp duty, Companies House
UK property data: prices, rents, valuations, sold prices, planning, flood risk, titles and UPRNs.
1
Related MCP Servers
- AlicenseCqualityDmaintenanceEnables access to UK property listings, price estimates, agent information, and market data through the Zoopla API for searching properties for sale or rent with detailed filters and analytics.22MIT
- AlicenseAqualityDmaintenanceEnables users to search UK property prices by postcode, street, or city using the HM Land Registry's SPARQL endpoint. It also provides tools for resolving postcodes and finding nearby locations through Ordnance Survey data.22MIT

Zyfy MCP Serverofficial
AlicenseAqualityCmaintenanceEnables natural language queries about UK postcodes and vehicles, including flood risk, crime rate, broadband coverage, property prices, MOT history, and ULEZ compliance.425 npmMIT- AlicenseAqualityBmaintenanceEnables AI agents to perform due diligence on Irish properties by querying public datasets for planning applications, sold prices, flood risk, radon risk, and zoning.146 npm7MIT