Skip to main content
Glama

Server Details

UK neighbourhood research from government open data: postcode reports, comparisons, 45 datasets.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
asturksever/agentic-house-search-data-registry
GitHub Stars
0

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.7/5 across 5 of 5 tools scored.

Server CoherenceA
Disambiguation5/5

Each tool has a clearly distinct purpose: compare does side-by-side multi-postcode analysis, report does a single-postcode deep dive, lookup resolves geography, search_datasets finds datasets, and get_dataset retrieves a full dataset entry. The descriptions explicitly cross-reference when not to use each tool, eliminating any ambiguity.

Naming Consistency5/5

All tool names follow a consistent pattern: lowercase snake_case with a 'postcode_' prefix followed by a verb_noun (compare, get_dataset, lookup, report, search_datasets). No mixed conventions or vague verbs like 'process' or 'execute'.

Tool Count5/5

At 5 tools, the set is tightly scoped for a UK house-search data server. Each tool covers a distinct operation (lookup, report, compare, dataset search, dataset details) and neither feels redundant nor bloated. This is well within the ideal 3-15 range.

Completeness5/5

The tool set provides a full workflow: look up a postcode's geography, get a comprehensive neighbourhood report, compare multiple postcodes, search for external datasets to fill gaps (e.g., EPC, flood risk), and retrieve full dataset details. There are no dead ends; every tool has a clear follow-up and the coverage matches the stated purpose.

Available Tools

5 tools
postcode_compareCompare UK postcodes side by sideA
Read-onlyIdempotent
Inspect

Compare two to five UK postcodes on chosen categories, aligned measure by measure.

Fetches each postcode's report concurrently and lines the facts up in a table, so you can answer "which of these is better connected / quieter / cheaper" in one call instead of several.

Args:

  • postcodes (string[]): 2-5 UK postcodes

  • categories (string[]): 1-6 of demographics, crime, deprivation, prices, broadband, mobile, noise, transport, amenities, schools, environment

  • response_format ('markdown' | 'json'): default 'markdown'

Returns: One row per measure with a column per postcode, each cell carrying the value, its band, and the category status for that postcode. Caveats collect anything that makes a row not strictly comparable.

Comparability warnings you must respect, and which this tool surfaces:

  • Deprivation ranks from different UK nations are NOT comparable — different indices over different numbers of areas.

  • A measure missing for one postcode because the dataset does not cover that nation is not a low score; the cell says "out_of_coverage".

  • Ofcom mobile figures describe a whole local authority, so two postcodes in the same authority will always be identical.

  • Crime counts describe a 1 km square and depend on each police force submitting data; a very low count can be a gap rather than a quiet street.

Examples:

  • "Which has better broadband, SW11 1AA or M1 1AE?" -> postcodes=[...], categories=["broadband"]

  • "Compare these three on crime and schools" -> categories=["crime","schools"]

Don't use when: you have one postcode (use postcode_report) or want the underlying datasets (use postcode_search_datasets).

ParametersJSON Schema
NameRequiredDescriptionDefault
postcodesYesTwo to five UK postcodes to compare, e.g. ["SW11 1AA", "M1 1AE"]
categoriesYesWhich categories to compare on. Keep it tight — comparing all eleven across five postcodes produces a very large answer.
response_formatNo'markdown' for a side-by-side table, 'json' for the structured comparisonmarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
rowsYes
caveatsYes
postcodesYes
categoriesYes
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld, and non-destructive hints. The description adds substantial behavioral context: concurrent fetching, output format, and critical comparability caveats (e.g., deprivation ranks not cross-nation comparable, mobile data at local authority level, crime data gaps). No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-organized with clear sections (Args, Returns, Caveats, Examples, Exclusions) and front-loaded with the core purpose. It is somewhat lengthy, but the length is justified by the tool's important comparability warnings and usage nuances.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers all relevant aspects: purpose, usage, parameter behavior, return format, caveats, and alternative tools. Even with an output schema available, it explains the table layout and limitations, making it fully complete for agent decision-making.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully describes each parameter with constraints and enums (100% coverage). The description's Args section largely restates schema information; the only extra advice ('keep it tight') is also present in the schema. Thus the description adds minimal value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: comparing 2-5 UK postcodes side by side on selected categories. It names the specific verb 'Compare' and resource 'UK postcodes', and differentiates it from siblings by naming alternatives like postcode_report for single postcodes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Don't use when' section provides clear exclusions with named sibling tools (postcode_report, postcode_search_datasets) and examples of appropriate use cases. This is exactly the guidance an agent needs to select the right tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

postcode_get_datasetGet one registry dataset entryA
Read-onlyIdempotent
Inspect

Full registry entry for one dataset, by id.

Returns everything needed to call the source yourself: its home page, machine-readable endpoint, API documentation, format, licence, geographic coverage, update cadence, and the concrete questions it can answer.

Args:

  • id (string): registry id, e.g. "police-street-crime", "land-registry-ppd", "ea-flood"

  • response_format ('markdown' | 'json'): default 'markdown'

Examples:

  • "How do I call the police API?" -> id="police-street-crime"

  • "What licence is Price Paid under?" -> id="land-registry-ppd"

Errors:

  • Returns the closest matching ids when the id is not found.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRegistry id, e.g. "police-street-crime" — find one with postcode_search_datasets
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
apiYes
linkYes
formatYes
datasetYes
licenceYes
api_docsYes
categoryYes
coverageYes
publisherYes
questionsYes
update_frequencyYes
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false. The description adds value by disclosing what is returned (home page, endpoint, API docs, format, licence, etc.) and the error behavior (closest matching ids when id not found). No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with purpose. It includes only necessary sections: a concise summary, Args, Examples, and Errors. Every sentence contributes useful information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity, the description is complete. It lists what the returned entry contains, accepts an optional output format, and explains error handling. The presence of an output schema means return value structure need not be detailed further.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has descriptions for only 1 of 2 parameters (50% coverage), so the description compensates by providing an Args section with examples for id and the default/options for response_format. This adds practical meaning beyond the schema's enum and type declarations.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Full registry entry for one dataset, by id' with a specific verb ('Get'), resource ('registry dataset'), and scope ('by id'). It distinguishes itself from sibling tools like postcode_search_datasets by focusing on retrieval of a single entry rather than searching or comparing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool: when you have a specific registry id and need complete details to call the source directly. It also includes examples and error fallback behavior. However, it does not explicitly mention alternatives or when not to use it, though the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

postcode_lookupLook up UK postcode geographyA
Read-onlyIdempotent
Inspect

Resolve a UK postcode to its geography — coordinates, local authority, ward, constituency, LSOA/MSOA/output area, police force, rural-urban class and deprivation rank.

One fast call with no downstream data fetching. Use it to check a postcode exists, to get the codes needed for other datasets, or when you only need where somewhere is rather than what it is like.

Args:

  • postcode (string): UK postcode, spaces optional

  • response_format ('markdown' | 'json'): default 'markdown'

Returns: Coordinates, administrative geography, statistical geography codes (LSOA/MSOA/OA — these are the keys most UK open datasets are published against), and the deprivation rank with the index it came from.

Examples:

  • "Where is SW11 1AA?" -> postcode="SW11 1AA"

  • "What LSOA covers M1 1AE?" -> postcode="M1 1AE"

  • "Is XY1 2AB a real postcode?" -> postcode="XY1 2AB" (returns an error with suggestions)

Don't use when: you want data about the area — use postcode_report instead.

Note: deprivation ranks are NOT comparable between UK nations. Each nation ranks its own areas against its own index, over a different number of areas; the index and its size are returned so you do not compare them by mistake.

ParametersJSON Schema
NameRequiredDescriptionDefault
postcodeYesA UK postcode, e.g. "SW11 1AA"
response_formatNo'markdown' to read, 'json' for the structured recordmarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
lsoaYes
msoaYes
wardYes
regionYes
countryYes
latitudeYes
postcodeYes
longitudeYes
output_areaYes
rural_urbanYes
constituencyYes
police_forceYes
national_parkYes
local_authorityYes
deprivation_rankYes
deprivation_indexYes
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the read-only/idempotent annotations, the description discloses critical behavioral nuances: deprivation ranks are NOT comparable between UK nations, invalid postcodes return an error with suggestions, and the call is fast with no downstream fetching. This provides rich context without contradicting annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with distinct sections (summary, usage, args, returns, examples, don't use, note). Although relatively long, every sentence earns its place, and the most important info is front-loaded in the first sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With only 2 parameters, an output schema present, and strong annotations, the description still adds essential context: examples, error behavior, cross-nation comparability warning, and a clear pointer to sibling tools. It is complete for an agent to select and invoke this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds value by noting postcode spaces are optional and provides concrete natural-language examples mapping to parameter values, which is beyond the schema's basic descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Resolve') and resource ('UK postcode to its geography'), enumerating exactly what is returned (coordinates, local authority, ward, constituency, etc.). It also distinguishes itself from siblings by noting it is for checking existence and getting codes, not for area data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use ('check a postcode exists', 'get codes needed for other datasets', 'when you only need where somewhere is') and when not to ('want data about the area'), naming the alternative tool (postcode_report). This meets the highest bar for usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

postcode_reportUK postcode neighbourhood reportA
Read-onlyIdempotent
Inspect

Full neighbourhood report for one UK postcode, assembled live from UK government open data.

Covers eleven categories: demographics (Census 2021), crime (data.police.uk), deprivation (IMD/WIMD/SIMD/NIMDM), property prices (HM Land Registry), broadband and 5G (Ofcom), noise (Defra), transport, amenities (OpenStreetMap), schools (DfE register: name, phase and distance only, no Ofsted grades) and planning constraints (Planning Data platform, Environment Agency).

Every figure carries the geography it describes (a postcode, an LSOA of ~1,500 people, or a whole local authority), the period it covers, and a benchmark where one exists. Read those: a crime count describes a 1 km square, and Ofcom mobile coverage describes an entire local authority, not the street.

Args:

  • postcode (string): UK postcode, spaces optional

  • categories (string[], optional): subset to fetch; omit for all eleven

  • include_sources (boolean): append publisher and licence per category (default false)

  • response_format ('markdown' | 'json'): default 'markdown'

Returns: Per category: a status, a one-paragraph summary, the facts (label, value, band, benchmark, geography, period, source id) and any caveats.

Statuses that are normal rather than failures:

  • "out_of_coverage": the dataset genuinely does not cover this nation. Census tables are England & Wales; police.uk excludes Scotland; Planning Data, Defra noise and the DfE school register are England-only. The reason and the devolved equivalent are given.

  • "unavailable": a pre-built extract has not been generated for this area yet (noise, currently).

  • "partial": some sources answered and some did not; check notes.

Examples:

  • "What's SW11 1AA like?" -> postcode="SW11 1AA"

  • "Is the broadband any good at M1 1AE?" -> postcode="M1 1AE", categories=["broadband","mobile"]

  • "Crime and schools near LA23 1AA" -> postcode="LA23 1AA", categories=["crime","schools"]

Errors:

  • "No such postcode" with suggestions when the postcode does not exist

  • Terminated postcodes are reported with the year they were withdrawn

Not a survey, valuation or conveyancing search. Check anything decision-critical against the source.

ParametersJSON Schema
NameRequiredDescriptionDefault
postcodeYesA UK postcode, with or without a space, e.g. "SW11 1AA" or "m11ae"
categoriesNoWhich sections to fetch. Omit for all eleven. Fetching only what you need is faster and much smaller — e.g. ["crime","schools"] for a family-safety question.
include_sourcesNoAppend the publisher and licence of each dataset used (default false)
response_formatNo'markdown' to read, 'json' for the full structured factsmarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
countryYes
postcodeYes
categoriesYes
local_authorityYes
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond the readOnlyHint, openWorldHint, idempotentHint, and destructiveHint annotations. It discloses that data is assembled live, explains geographic scope caveats (e.g., crime describes a 1 km square, Ofcom coverage describes a local authority), and details normal statuses like 'out_of_coverage', 'unavailable', and 'partial'. It also describes error behavior, making the tool's operational boundaries transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured with clear sections (Args, Returns, Examples, Errors). Every section adds genuine value, from coverage caveats to status explanations, and the opening sentence immediately establishes the core purpose. Despite length, there is no wasted or redundant text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is remarkably complete for a tool of this complexity. It covers the 11 categories, data sources, geographic benchmarks, normal vs. error statuses, parameter behavior, and provides concrete examples. Combined with the output schema presence, the agent has everything needed to invoke and interpret the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents all four parameters with descriptions, including enums and defaults (100% coverage). The main description's Args section mostly repeats the schema rather than adding new semantic meaning. The examples add practical usage context but do not materially deepen parameter understanding beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific purpose: 'Full neighbourhood report for one UK postcode, assembled live from UK government open data.' It distinguishes itself from siblings like postcode_compare, postcode_lookup, and postcode_get_dataset by emphasizing the comprehensive, single-postcode report nature.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use the tool, including natural-language examples and the ability to limit categories. It also states exclusions ('Not a survey, valuation or conveyancing search') and warns users to check decision-critical data against the source. However, it does not explicitly name sibling tools as alternatives, so it stops short of full 5-level guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

postcode_search_datasetsSearch the UK open-data registryA
Read-onlyIdempotent
Inspect

Search a curated registry of 45 UK open datasets and APIs for property and neighbourhood research.

Each entry records the dataset's home page, its machine-readable endpoint, format, licence, geographic coverage, update cadence, and the concrete questions it can answer. Use it to find the right source for something this server does not report directly — EPC ratings, planning applications, flood risk, council tax bands, bus timetables, air quality, ground stability, land ownership.

Args:

  • query (string, optional): free text over name, publisher, category, endpoint and questions

  • category (string, optional): category prefix, e.g. "Crime", "Transport", "Environment"

  • limit (number): 1-45, default 10

  • offset (number): pagination offset, default 0

  • response_format ('markdown' | 'json'): default 'markdown'

Returns: { total, count, offset, has_more, next_offset, datasets: [{ id, dataset, publisher, category, api, licence, coverage, update_frequency }] }

Examples:

  • "Where do I get EPC data?" -> query="EPC"

  • "What flood datasets are there?" -> query="flood"

  • "List every transport source" -> category="Transport", limit=20

Follow up with postcode_get_dataset for the full entry including API docs and the questions it answers.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results (default 10)
queryNoFree text matched against dataset name, publisher, category, API endpoint and the questions each dataset answers. Omit to list everything.
offsetNoResults to skip, for pagination
categoryNoFilter by category prefix, e.g. "Crime", "Transport", "Environment"
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
totalYes
offsetYes
datasetsYes
has_moreYes
next_offsetNo
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds useful behavioral context beyond that: it is a curated registry of exactly 45 datasets, returns paginated results with has_more/next_offset, and supports both markdown and JSON output. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is somewhat long but well-organized with Args, Returns, and Examples sections. It front-loads the purpose and every section earns its place, though a bit of redundancy exists between the schema and the Args list. Overall, it is efficient for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with 5 optional parameters and an output schema, this description is complete. It explains what the tool searches, how to use it, what it returns, and the follow-up tool for deeper detail. The presence of an output schema reduces the need to explain return shape, but the description covers it anyway.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is high (80%), and each parameter already has a description. The tool description reinforces this by explaining query matches 'name, publisher, category, endpoint and questions', giving concrete category examples, and providing example queries (e.g., 'query="EPC"'). This adds practical value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Search') with a clear resource ('curated registry of 45 UK open datasets and APIs') and scope ('for property and neighbourhood research'). It distinguishes from sibling tools by explicitly positioning this as a search/discovery tool, while noting 'Follow up with postcode_get_dataset for the full entry'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit usage context: 'Use it to find the right source for something this server does not report directly' and lists concrete use cases (EPC ratings, flood risk, etc.). It also names the alternative tool for follow-up, making the division of responsibility between siblings clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    UK property area intelligence: validated trajectory scores, gentrification early-warning and area screening for 2,292 England & Wales postcode districts, from 30+ government data sources.
    Last updated
    12
    7
    MIT
  • A
    license
    -
    quality
    A
    maintenance
    A research MCP server for UK geospatial and statistical data, enabling AI assistants to query Ordnance Survey and ONS datasets.
    Last updated
    3
    MIT

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.