Skip to main content
Glama

WhereToLive London open data

Server Details

London postcodes and districts from official open data: prices, crime, schools, rents, commutes

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.9/5.0

Scored across 7 tools

Disambiguation4/5

Most tools target clearly distinct actions (single-postcode facts, district profile, commute lookup, side-by-side compare, criteria screen, ranking). The one real hazard is the near-identical pair find_london_district (resolve a name to districts) vs find_london_districts (screen districts on criteria), which differ by a single 's'/plural and could easily be misselected despite the descriptions explicitly cross-referencing each other. compare_london_districts and rank_london_districts also sit close together, but ranking-by-one-measure vs comparing-a-fixed-list is workable.

Naming Consistency4/5

All seven tools use a consistent snake_case verb_noun pattern with a sensible verb set (check, compare, find, get, rank). The deviation is the singular/plural pair find_london_district vs find_london_districts, which signals different behavior only through a single character and undermines predictability.

Tool Count5/5

Seven tools is well-scoped for an open-data London district server, and each tool has a defensible distinct job: discovery, screening, ranking, comparison, profiling, commute lookup and postcode-level detail. No tool feels redundant or padded.

Completeness4/5

The surface covers the natural lifecycle of 'find a place, screen it, compare it, rank it, inspect its details and commute'. Minor gaps remain: there is no plain list/enumerate-all-districts operation (only ranked or criteria-filtered retrieval), no standalone tool to enumerate valid work hubs or schools, and no dataset-level metadata/lookup beyond what is embedded in other tools. These are workable gaps rather than dead ends.

Available Tools

7 tools
check_london_postcodeCheck a London postcodeB
Read-onlyIdempotent
Inspect

Open-data facts at one full London postcode (e.g. "E17 4QH"): the Environment Agency flood zone at its centre; whether its centre is inside a conservation area, listed building outline, Article 4 direction area or tree preservation order area (planning.data.gov.uk, with "unknown" where the borough publishes no data); its Census neighbourhood's police.uk crime rate per 1,000 residents against London, Index of Multiple Deprivation decile and housing tenure; the nearest state schools with their own Ofsted grade and the nearest stations, by straight-line distance; door-to-door commute minutes from its postcode sector to 12 work hubs; council tax bands for its borough; and its district page. Every block says which area it describes; a single home can differ.

ParametersJSON Schema
NameRequiredDescriptionDefault
postcodeYesA full London postcode, e.g. "E17 4QH" or "sw112ar".

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description goes beyond them by naming data sources (Environment Agency, planning.data.gov.uk, police.uk) and disclosing the 'unknown' fallback where a borough publishes no data, plus the straight-line-distance caveat and the 'single home can differ' warning.

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

Conciseness3/5

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

The content is dense and largely earns its place because there is no output schema, but it is delivered as one sprawling semicolon-chained sentence. The critical caveats ('unknown', 'a single home can differ') sit at the very end rather than being front-loaded.

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

Completeness4/5

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

With no output schema, the description must enumerate return content, and it does so comprehensively: flood zone, planning constraints, crime/deprivation/tenure, schools and stations, commute times, council tax bands, and the district page. The only gap is any indication of latency, coverage limits, or what happens for a non-London or invalid postcode.

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?

Only one parameter exists and schema coverage is 100%, so the schema fully documents the postcode field with its own example. The description repeats the format hint ('E17 4QH') without adding syntax the schema lacks. Baseline 3 applies when the schema does the heavy lifting.

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

Purpose4/5

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

The description opens with a specific verb and resource ('Open-data facts at one full London postcode'), which is far more informative than the tautological title. Granularity ('one full London postcode') implicitly separates it from the district-level siblings, but no sibling is named explicitly, so an agent must infer the distinction.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not statement, and none of the six siblings (find_london_district, get_district_profile, etc.) are referenced as alternatives. The agent gets a data inventory but no routing guidance for choosing this tool over the district or commute tools.

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

compare_london_districtsCompare London postcode districtsA
Read-onlyIdempotent
Inspect

Side-by-side open-data figures for 2 to 6 London postcode districts and London as a whole: median sold price of existing houses, residential crime per 1,000 residents, Outstanding state schools, share of postcodes in flood zone 3, Band D council tax, the main borough's ONS official rent, the share of residents in England's most deprived 20% of areas, Census 2021 tenure, and optionally commute minutes to one hub.

ParametersJSON Schema
NameRequiredDescriptionDefault
hubNoAdd typical commute minutes to this work hub.
bedroomsNoBedrooms for the official rent column: all (default), 1, 2, 3 or 4+.
districtsYes2 to 6 outward codes or postcodes, e.g. ["E17", "E10", "N17"].

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description adds data provenance ('open-data figures') and clarifies that the hub/commute column is optional, but omits freshness, aggregation caveats (e.g. 'main borough's' rent roll-up), and any rate/coverage limits.

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?

Front-loaded with the core scope (side-by-side, 2-6 districts, London baseline) before the metric list, and every token is informative. It is a single long run-on sentence, which slightly hurts scannability of the metric list but wastes nothing.

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

Completeness4/5

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

With no output schema, the description carries the return-value burden and does so well by enumerating the metric columns, the London-wide baseline, and the optional commute column. It would be stronger with a note on output shape (per-district rows) and data recency, but it is largely sufficient for correct invocation.

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?

Schema description coverage is 100%: districts, hub and bedrooms are all documented inline, including the 2-6 item bound and the enum values. The description only echoes '2 to 6 districts' and the optional hub commute, adding no syntax or format meaning beyond the schema, so baseline 3 applies.

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

Purpose4/5

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

The verb 'compare' (side-by-side) plus resource 'London postcode districts' is specific, and the enumeration of metrics leaves no doubt what the tool computes. It implicitly separates itself from single-district tools like get_district_profile and ranking tools like rank_london_districts via the '2 to 6 districts and London as a whole' scope, but never names a sibling explicitly.

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

Usage Guidelines3/5

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

Usage is only implied: the side-by-side framing and multi-district scope suggest this is the tool for cross-district comparison. There is no explicit when-to-use/when-not, and no pointer to get_district_profile (single area) or rank_london_districts (ordered ranking) as the alternatives an agent should weigh.

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

find_london_districtFind a London postcode districtA
Read-onlyIdempotent
Inspect

Resolve a place name, borough, Tube or rail station, outward code or full postcode to the London postcode district(s) the other tools take. Returns up to 15 matches with their borough(s) and how each matched. To screen districts on prices, commute, crime, schools, flood or rent, use find_london_districts instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesA place ("Walthamstow", "Clapham"), borough ("Hackney"), station ("Clapham Junction"), outward code ("SW1") or postcode ("E17 4QH").

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds real behavior beyond that: a match cap of 15, per-match borough attribution, and disclosure of how each match was made, which helps the agent interpret results.

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?

Two sentences with zero filler; the resolution scope is front-loaded and the sibling routing follows. Every clause carries information.

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

Completeness4/5

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

With no output schema, the description usefully characterizes the return (up to 15 matches, boroughs, match rationale). It stops short of describing no-match or ambiguous-query behavior, but is otherwise sufficient for a single-parameter lookup tool.

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?

Schema coverage is 100% and its parameter description already enumerates the same input forms (place, borough, station, outward code, postcode) with examples. The description adds no format or ambiguous-input handling beyond the schema, so baseline 3 applies.

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?

States a specific verb (resolve) and resource (place names, boroughs, stations, codes to London postcode districts) and explicitly distinguishes itself from the sibling find_london_districts. An agent can route correctly without opening the schema.

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?

Explicitly names the alternative for screening on prices, commute, crime, schools, flood or rent, with the selecting condition. However, it does not address overlap with the sibling check_london_postcode, which also sounds postcode-oriented — a small gap in routing guidance.

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

find_london_districtsScreen London districts on several criteriaA
Read-onlyIdempotent
Inspect

Find the London postcode districts that meet several open-data criteria at once: a maximum Land Registry median house price, a maximum commute to a work hub, crime at or below the London rate or under a rate per 1,000 residents, a minimum number of Outstanding state schools, a maximum share of postcodes in flood zone 3, a maximum ONS official borough rent for a number of bedrooms, and an optional borough. Each match carries the figures that qualified it, with sample sizes, and its page URL; districts that cannot be checked for lack of data are counted, not hidden. When nothing matches, it returns the districts that miss by only one criterion, closest first, with by how much, and names the criterion that rules out most of them. Houses only: flat medians are not compared across districts (retirement flats are not identified in Land Registry data).

ParametersJSON Schema
NameRequiredDescriptionDefault
hubNoWork hub for the commute criterion or sort. canary-wharf (Canary Wharf), city-of-london (Bank / Liverpool Street / Moorgate), kings-cross (King's Cross), westminster (Westminster), oxford-circus (Oxford Circus), london-bridge (London Bridge), paddington (Paddington), stratford (Stratford), hammersmith (Hammersmith), victoria (Victoria), waterloo (Waterloo), farringdon (Farringdon).
limitNoDistricts to return (default 20, max 50).
boroughNoOnly districts with postcodes in this London borough, e.g. "Lewisham".
sort_byNoOrder of the matches (lowest first, Outstanding schools most first). Default: the first criterion given.
bedroomsNoBedrooms for the rent criterion: all (default), 1, 2, 3 or 4+.
max_commute_minutesNoOnly districts whose typical door-to-door minutes to hub are at or under this (needs hub).
max_flood_zone_3_pctNoOnly districts with at most this % of postcodes in Environment Agency Flood Zone 3.
min_outstanding_schoolsNoOnly districts with at least this many state schools currently graded Outstanding by Ofsted.
max_official_rent_gbp_pcmNoOnly districts whose borough(s) have an ONS official average monthly rent at or under this (see bedrooms).
max_median_house_price_gbpNoOnly districts whose median sold price of existing houses (12 months) is at or under this.
crime_at_or_below_london_rateNoOnly districts whose residential crime per 1,000 residents is at or below London as a whole.
max_crimes_per_1000_residentsNoOnly districts at or under this many residential-relevant crimes per 1,000 residents a year.

TDQS

A4.1/5.0
Behavior5/5

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

Goes well beyond the readOnly/idempotent annotations: each match carries qualifying figures, sample sizes, and a page URL; uncheckable districts are 'counted, not hidden'; and when nothing matches it returns near-misses sorted closest-first with the ruling-out criterion. The flats-retirement caveat is also disclosed. This is rich operational context.

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?

Front-loaded purpose followed by criteria enumeration and then the two valuable behavioral clauses (uncheckable districts, no-match fallback). The criteria list partially duplicates the schema, but the description stays readable and most sentences carry non-redundant information.

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

Completeness4/5

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

For a 12-parameter, no-required, no-output-schema tool, it explains the AND-combination semantics and the return payload (figures, sample sizes, URLs, near-miss fallback), so the agent knows what comes back. Only the interaction/precedence among the six sibling tools is left unaddressed.

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?

Schema description coverage is 100%, so the schema already documents all 12 parameters thoroughly (including enums, ranges, sort defaults). The description mostly re-lists the same criteria, adding only the houses-only qualifier for the price comparison. Baseline 3 is appropriate.

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?

Opens with a specific verb and resource ('Find the London postcode districts') plus the conjunctive screening model ('meet several open-data criteria at once'). This clearly separates it from siblings like find_london_district, rank_london_districts, and compare_london_districts without the agent needing to open schemas.

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

Usage Guidelines3/5

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

Usage is implied by 'meet several criteria at once' (AND-filter screening), and it does state one constraint ('Houses only'). But it never names when to prefer rank_london_districts or compare_london_districts, which is a real risk given six siblings. No explicit when-not guidance.

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

get_commute_timesCommute times from a London districtA
Read-onlyIdempotent
Inspect

Typical door-to-door public transport minutes (TfL Journey Planner, 09:00 weekday departure) from a London postcode district to London work hubs, quickest first, with the district's quickest sector. Hubs: canary-wharf (Canary Wharf), city-of-london (Bank / Liverpool Street / Moorgate), kings-cross (King's Cross), westminster (Westminster), oxford-circus (Oxford Circus), london-bridge (London Bridge), paddington (Paddington), stratford (Stratford), hammersmith (Hammersmith), victoria (Victoria), waterloo (Waterloo), farringdon (Farringdon).

ParametersJSON Schema
NameRequiredDescriptionDefault
hubNoOne hub only; leave out for all 12.
districtYesA London postcode district (outward code) such as "E17" or "SW11", or a full postcode such as "E17 4QH".

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the description adds useful context instead: data source (TfL Journey Planner), the 09:00 weekday departure assumption, quickest-first ordering, and that the district's quickest sector is included. It stops short of describing failure behavior for unrecognised districts.

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 core purpose, source, timing assumption and ordering are front-loaded in the first clause. The trailing 12-hub enumeration is long, but it is the only place the readable hub names appear, so it largely earns its space.

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

Completeness4/5

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

With no output schema, the description does carry the return-format burden and handles it well (minutes, quickest first, quickest sector). Missing only edge-case detail such as what happens for an invalid or unrecognised district, which the check_london_postcode sibling could have been referenced for.

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 baseline is 3, but the description adds genuine value by mapping each enum slug to its human-readable hub name (e.g. canary-wharf to Canary Wharf, city-of-london to Bank / Liverpool Street / Moorgate), clarifying ambiguous codes the raw enum does not explain.

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 states a specific verb+resource with full scope: door-to-door public transport minutes from a London postcode district to named work hubs. It clearly distinguishes the tool from siblings like compare_london_districts and get_district_profile by naming the origin/destination framing and the quickest-first output.

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

Usage Guidelines3/5

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

Usage is implied by the scope (one district against one or all hubs), and the hub omission default ('leave out for all 12' via schema) is helpful. However, there is no explicit guidance on when to use this versus compare_london_districts or get_district_profile, nor any stated precondition that the district must be valid.

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

get_district_profileLondon district profileB
Read-onlyIdempotent
Inspect

Open-data profile of one London postcode district: HM Land Registry median sold prices of existing flats and houses (12 months, with sales counts and London figures) and five years of yearly medians, police.uk residential crime per 1,000 residents against London, Ofsted grades of its state schools with the Outstanding ones named, the share of its postcodes in Environment Agency flood zones 2 and 3, council tax bands and ONS official rents for its borough(s), and who lives there (Census 2021 tenure and age, and the share of residents in England's most deprived areas on the Index of Multiple Deprivation 2025). Each block has its window, definition, caveats and source, plus a sentence that keeps them together, and the district page URL to cite.

ParametersJSON Schema
NameRequiredDescriptionDefault
districtYesA London postcode district (outward code) such as "E17" or "SW11", or a full postcode such as "E17 4QH".

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, non-destructive, closed-world), so the bar is low and the description clears it: it discloses data provenance (HM Land Registry, police.uk, Ofsted, Environment Agency, ONS, Census 2021, IMD 2025), a 12-month sales window and five-year medians, and that every block carries caveats and a source citation. That is real context beyond the annotations, though it does not state failure behavior for an unknown district.

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

Conciseness3/5

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

The opening clause is well front-loaded and each enumerated block is arguably load-bearing for a data-heavy tool, but the body is a long run-on enumeration with no bullets or grouping, which makes it harder to parse than it needs to be. Content is justified; structure is not.

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

Completeness4/5

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

There is no output schema, so the description bears the burden of describing the return payload, and it does so thoroughly across every data block, including windows, definitions and citation URL. The remaining gap is what happens on an invalid or non-London district input, which is not addressed anywhere.

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?

Schema description coverage is 100%, so the 'district' parameter is fully documented with format and examples in the schema; the description adds only the implicit scope ('one London postcode district') and no syntax or edge-case detail. This is the baseline 3 for a schema that does the heavy lifting.

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

Purpose4/5

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

States a specific verb (profile) and a precise resource/scope ('one London postcode district'), and the enumerated data blocks make it obvious this is a single-district deep-dive rather than a lookup or comparison. It never names a sibling (compare_london_districts, find_london_district, check_london_postcode), so the differentiation is inferred from scope rather than stated.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance and no mention of alternatives, despite five plausible siblings that overlap (compare_london_districts, rank_london_districts, check_london_postcode). The agent must infer from 'one district' that this is not the multi-district or validation tool.

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

rank_london_districtsRank London postcode districtsA
Read-onlyIdempotent
Inspect

London postcode districts ranked on one open-data measure: lowest_crime_rate (police.uk residential crime per 1,000 residents), cheapest_houses (Land Registry median sold price of existing houses; flats are not ranked), most_outstanding_schools (Ofsted), or shortest_commute (needs hub). Optional borough filter, commute cut-off and reversed order (most expensive, highest crime, longest commute first). Ranks are London-wide.

ParametersJSON Schema
NameRequiredDescriptionDefault
hubNoFor shortest_commute: the work hub. canary-wharf (Canary Wharf), city-of-london (Bank / Liverpool Street / Moorgate), kings-cross (King's Cross), westminster (Westminster), oxford-circus (Oxford Circus), london-bridge (London Bridge), paddington (Paddington), stratford (Stratford), hammersmith (Hammersmith), victoria (Victoria), waterloo (Waterloo), farringdon (Farringdon).
limitNoRows to return (default 10, max 50).
metricYesWhat to rank on.
boroughNoOnly districts with postcodes in this London borough, e.g. "Lewisham".
reverseNoWorst first: highest crime, most expensive, fewest Outstanding schools, longest commute.
max_minutesNoFor shortest_commute: only districts at or under this many minutes.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already establish readOnly/idempotent/non-destructive, so the description's job is to add semantics beyond that. It does: data provenance (police.uk per 1,000 residents, Land Registry median sold price, Ofsted Outstanding), the flats exclusion, and that ranks are London-wide rather than within the borough filter. It doesn't describe the returned row shape, but annotations carry the safety profile.

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?

A single dense paragraph that front-loads the metric list, with no filler sentences. It is slightly long because of the parenthetical source annotations, but every clause carries information an agent needs to pick a metric correctly.

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

Completeness4/5

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

For a 6-parameter read-only ranking tool with no output schema, the description covers metric semantics, the hub dependency, the cut-off, and the scope of ranking. The main remaining gap is the shape of returned rows (district name, score, rank), which an agent must infer.

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 3 is the baseline, but the description adds meaning beyond the schema: it defines what each metric rank actually measures and clarifies that reverse yields 'most expensive, highest crime, longest commute first', and that hub is required for shortest_commute. These tie parameters to behavior rather than restating field names.

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?

States a specific verb (rank) and resource (London postcode districts) plus the exact set of ranking metrics with their data sources. An agent can immediately distinguish it from compare_london_districts or find_london_district, which are lookups rather than rankings.

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?

Explains each metric's meaning and conditional usage (shortest_commute 'needs hub', flats excluded from cheapest_houses), and describes the optional borough filter and reverse ordering. It does not explicitly name a sibling tool or say when to prefer this over compare_london_districts, so it stops short of a 5.

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.

  1. 7 tool updates
    • First observedcheck_london_postcode
    • First observedcompare_london_districts
    • First observedfind_london_district
    • First observedfind_london_districts
    • First observedget_commute_times
    • First observedget_district_profile
    • First observedrank_london_districts

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    C
    maintenance
    Provides real-time London area intelligence including postcode data, crime, schools, transport, and investment metrics, enabling AI assistants to answer property-related queries.
    -
  • 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.
    7
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to retrieve a full UK postcode report, perform fast geography lookups, compare up to five postcodes side by side, and search or fetch the underlying open dataset registry through the Model Context Protocol.
    1
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources