homedata-mcp
The Homedata MCP server exposes the Homedata API as tools for AI assistants, covering 29 million UK addresses. Here's what you can do:
Account & Auth Management
Start the Homedata signup process to obtain an API key
Check whether your configured API key is working
Address Resolution
Search 29M UK addresses by free text (optionally constrained by postcode) to resolve to a UPRN
Property Lookups
Look up a single property by UPRN: address, geometry, tenure, build characteristics, rooms, dimensions, garden, parking
Batch look up up to 50 properties in a single request
Discover which data types are available for a specific UPRN
Access tiered property data from basic identifiers up to full details including valuations, comparables, price trends, and planning history
Energy & Environment
Fetch the latest EPC: efficiency rating, CO2 emissions, insulation, heating
Get Environment Agency flood risk classifications (river/sea and surface water)
Financial & Taxation
Retrieve council tax band and billing authority
Get full HM Land Registry sale history
Find comparable recently-sold nearby properties for valuation
Listings & Planning
Search live and historic sales/lettings listings linked to a UPRN
Retrieve planning applications associated with or near a property
Local Area Context
Get ONS Census 2021 demographic profiles for a postcode
Retrieve crime counts and categories by postcode
Find nearby schools with Ofsted ratings within a specified radius
Check Ofcom broadband availability and speeds for a postcode
Find nearby transport nodes (rail, tube, bus stops)
Get a one-call postcode rollup bundling demographics, crime, broadband, average sale prices, and school counts
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
A Model Context Protocol server that exposes the Homedata UK property data API as native tools for AI coding assistants - Claude Desktop, Claude Code, Cursor, and any other MCP client.
29M UK addresses keyed by UPRN, with EPCs, sale history, planning, flood risk, council tax, demographics, crime, schools, broadband and transport - all queryable directly from your assistant chat.
Data is sourced from Home.co.uk's 30-year panel of partners, the Environment Agency, ONS Census 2021, the Valuation Office Agency, Ofcom, Ofsted, data.police.uk and HM Land Registry.
Install
Requires Python 3.10+.
pip install homedata-mcpFor local development from this repository:
git clone https://github.com/wehomemove/homedata-mcp.git
cd homedata-mcp
pip install -e .You will need a Homedata API key. Sign up at homedata.co.uk/developer - the Free tier gives 100 calls / month with no card required.
export HOMEDATA_API_KEY=hd_live_xxx
homedata-mcp --helpRelated MCP server: Property Price Search MCP Server
CLI
The package also installs a homedata command — same data as the MCP
server but for human shells, scripting, and CI. Useful for quick lookups,
demos, and piping into other tools.
homedata property 100021421083
homedata epc 100021421083 --field current_energy_efficiency
homedata search "10 downing street" --postcode SW1A2AA
homedata flood 100021421083 --compact
homedata batch 100021421083 100022121211Pass --field <dotted.path> to extract a single value (handy for shell
pipelines) and --compact for single-line JSON. Reads the same
HOMEDATA_API_KEY env var as the MCP server. Run homedata --help for
the full list of subcommands.
Wire it into Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json
(macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"homedata": {
"command": "homedata-mcp",
"env": {
"HOMEDATA_API_KEY": "your_api_key_here"
}
}
}
}Restart Claude Desktop. You should see the 16 Homedata tools appear in the tool picker.
Cursor / Claude Code
Both Cursor and Claude Code accept the same MCP server spec. Add an entry
pointing command at homedata-mcp and put your key in env.
Tools
All UPRN tools take a single 12-digit Unique Property Reference Number; all postcode tools accept any common UK postcode format.
Property tiers — pick a depth
One UPRN in, fixed cost out. Choose the cheapest tier that covers what
you need; discover_property is the 1-call menu that tells you which
slugs are populated before you commit.
Tool | Endpoint | Cost | What it returns |
|
| 1 call | The menu — which slugs exist for this UPRN + tier shortcuts |
|
| 5 calls | Address + identifiers only |
|
| 10 calls | Address + rooms + EPC + last sold + construction + dimensions + garden + parking + LR title basics |
|
| 25 calls | Recommended. Base + council tax + flood + schools + broadband + crime + demographics + amenities + planning summary + valuations + solar + lr_sales |
|
| 50 calls | Core + council tax full (£ charges) + comparables + live listings + full risks + deprivation + planning history + price trends |
Single-purpose lookups
Tool | Endpoint | Inputs |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Typical workflow
Resolve text → UPRN with
search_address.(Optional)
discover_propertyto see what's available for the UPRN.Pick a tier:
lookup_property_coreis the recommended starting point — one call gets you address, energy, statutory, area context and valuations in a single response. Step down to_baseif you only need the basics; step up to_completeif you want comparables and full risks too.For narrow follow-ups use the single-purpose tools (
lookup_council_tax,lookup_flood_risk,get_planning_applications, etc.).Add area context:
get_postcode_profile(cheap one-shot), or callget_demographics/get_crime/get_schools/get_broadband/get_transportindividually.
Configuration
Variable | Required | Default | Notes |
| yes | - | Your Homedata API key ( |
| no |
| Override for staging or self-hosted. |
Every tool returns either the parsed JSON body from the API, or
{"error": "...", "status_code": N, "detail": ...} on failure - tools never
raise exceptions out into the MCP protocol layer.
Pricing
Calls made via this MCP server count against your Homedata API plan exactly the same as any other API call. Plans (as of writing):
Plan | Price | Calls / month |
Free | £0 | 100 |
Starter | £49 | 2,000 |
Growth | £149 | 10,000 |
Pro | £349 | 50,000 |
Scale | £699 | 250,000 |
See homedata.co.uk/pricing for the current list.
Development
pip install -e ".[dev]"
HOMEDATA_API_KEY=hd_live_xxx pytest -vTests are skipped automatically when no API key is present, so the suite is safe to run in CI without secrets.
Project layout
homedata-mcp/
pyproject.toml
README.md
homedata_mcp/
__init__.py
server.py # FastMCP server + CLI entry point
client.py # httpx wrapper with auth + uniform error handling
tools/
__init__.py
property.py # lookup_property, batch_property_lookup
epc.py # lookup_epc
risk.py # lookup_flood_risk, lookup_council_tax
listings.py # search_property_listings, get_property_sales, get_comparables
planning.py # get_planning_applications
local.py # get_demographics, get_crime, get_schools, get_broadband, get_transport
address.py # search_address
profile.py # get_postcode_profile
tests/
test_tools.pyLicense
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
Address validation & geocoding for AI agents: 240+ countries, UK PAF, free US/CA enrichment
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
- -licenseNot gradedqualityCmaintenanceProvides real-time London area intelligence including postcode data, crime, schools, transport, and investment metrics, enabling AI assistants to answer property-related queries.-

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.440 npmMIT