ai.marketcode/marketcode · v1.0.0 · location-and-travel
MarketCode is healthy: it completed an MCP handshake in 1058 ms and exposes 99 tools.
UK property intelligence with evidence behind the numbers.
Endpoint: https://mcp.marketcode.ai/mcp (streamable-http)
No repository listed · JSON · Add to my inventory
| Users (last 30 days) | 0 |
| Handshake | Healthy |
| Auth needed | None |
| Tool count | 99 |
| Latency | 1058 ms |
| Last checked (UTC) | 2026-10-29T12:55:23.440Z |
| Checked (UTC) | Status | Latency | Error |
|---|---|---|---|
| 2026-10-29T12:55:23.440Z | Healthy | 1058 |
entity_search_capabilities | Governed entity families, criteria, coverage and query limits. Call before building searches. Free. |
lookup_entities | Find public records by title/address text, postcode or public UUID. Exact and lexical lookup uses no model or embeddings; supports token prefixes and bounded typo tolerance in accepted search publications. Returns separate families with UUID detail links and explicit searched coverage. Never claim a |
ask_question | Use the SAME Ask router as the portal. Route a place/kind into the published taxonomy, a dated figure to the governed semantic query, or exact company/property/title references to a bounded corporate network/path. This tool proposes execution; it does not execute paid work. Respect unsupported crite |
search_entities | Bounded public search using the versioned SearchQuery. Criteria are validated by the server; sorting and pagination use the same eligibility as the map. All Entities returns separate groups. No graph inference or unknown evidence changes eligibility. QUERY SHAPE — `query` is one object: { |
search_summary | Counts and statistics over EXACTLY what `search_entities` would match: how many records, grouped by a field, with min, median, mean and max of up to three numeric fields. Use it for "how many", "what share", "median floor area" and "price by type" questions instead of paging through records. `q |
market_profile | One market profile: an area × residential bedroom cohort with every published measure — asking sale price and rent, completed sale price, gross yield on asking, live stock, new listings, price reductions, turnover and registry sale volume — each with its `basis` sentence, unit, coverage and an obser |
entity_relationships | Recorded relationship evidence from the derived graph. Use canonical ids from search. Cite path provenance and publication dates. Bounded and eventually consistent; missing links do not establish absence, ownership or off-market status. No private ownership payloads are returned. Free. |
actor_network | Investigate recorded corporate ownership, title and agency relationships. Requires the customer's account; never use an anonymous preview key. Depth 1–3, at most 100 nodes; clipped networks explicitly say truncated. Cite publication IDs and provenance on each hop. Missing links are not negative find |
actor_path | Find a recorded path between two corporate-network records within three hops. Requires the customer's account. A clipped search returns incomplete, never a claim that no relationship exists. Return the ordered hops with their source/publication evidence. Costs 15 credits (15p). |
address_autocomplete | Address autocomplete. Returns ranked candidates for a partial address or postcode. Use `address_resolve` to turn a candidate into a canonical UPRN. This is the free entry point: resolve, lookup and postcode listing are priced because they return OS AddressBase content, but narrowin |
address_resolve | Resolve free-text address to canonical record (UPRN for UK). Costs 2 credits (2p); free on marketcode.ai. |
address_by_uprn | Look up an address by UPRN (UK only). Costs 1 credit (1p); free on marketcode.ai. Keyed on a UPRN, not an address: call `address_autocomplete` (free) to narrow, then `address_resolve` to get one. |
address_by_postcode | Return all addresses at a UK postcode. Costs 2 credits (2p); free on marketcode.ai. |
property_lookup | Full property record for a UPRN, grouped into tiers: identity, property, energy, building, land, risk, designations, infrastructure, ownership, provenance. Up to ~300 fields — null fields are omitted, so a typical urban flat returns fewer than a rural site with designations on it. |
property_reconcile | Cross-source property facts with provenance and unresolved attributes. Review floor area, bedrooms and tenure with the user before a valuation. `ml_primary` and `imputed` are predictions, not measurements; a warehouse value is not automatically declared. `eligible_as_primary: false` |
market_facts | Price, price per sqm and turnover rate for ONE geography × asset class × bedroom band × period, from the pre-cubed area_facts table. Metrics: sales_price, price_psm, turnover_rate are populated today. rental_value, gross_yield and days_on_market are NOT — the pipeline has never |
market_ranking | Rank areas AGAINST EACH OTHER on a market metric — one row per area, AGGREGATED over a trailing window of whole months. This is the comparison tool. `market_facts` answers for one geography; calling it in a loop to build a league table is slower, costs more and gives you rows f |
market_volume_series | Monthly transaction VOLUME for a postcode district, postcode area or county — every registered sale, 1995 to present, oldest month first. Use this, not `market_facts`, for "how many sales" questions. `market_facts` reads the area_facts cube, whose count is a UPRN-matched sample |
market_index_series | The published house-price INDEX for one postcode district or local authority: the level per month (base period = 100), the forecast tail flagged, and provenance saying how the index was built. Use this for "how has W14 moved since 2015", "what is the trend in Camden", or to car |
market_yields | Gross rental yield for an area and bedroom band on two bases, by month, with n: `gross_yield_asking` (12 × the month's median asking rent ÷ the median asking price of sale listings in the same area, band and month — different properties) and `gross_yield_avm_median` (the median, ove |
market_forecast | The published house-price index forecast for a postcode district or local authority: the last SETTLED index point as the anchor, then up to seven forecast periods with `lo`/`hi` bands, plus the method and publication grain behind them. Seven is the horizon the index publishes — noth |
supply_demand | Supply and demand for an area in one call: live stock today (count, median days on market, new-home count) and the monthly flow — listings added and reduced, reduction share, new-home share, agent concentration, asking-to-sold on the registry-matched subset and days to completion. |
time_adjustment | The factor that carries a price paid in a past month to the latest SETTLED month of the published repeat-sales house-price index: the postcode district's own series, else its local authority's, else the national series; forecast months are never used. Returns `factor`, the two i |
commercial_index_series | Repeat-sales CAPITAL index for UK commercial property, quarterly, 1995Q1 = 100. Three families exist and nothing else: national ALL; national x sector for the sectors that passed the level gate (OFFICE, RETAIL, HOTEL, HOLIDAY_LET); and local authority x ALL for the 19 authoriti |
commercial_rent_index_series | Commercial RENT index from the VOA rating lists — FOUR points, one per list (2010 / 2017 / 2023 / 2026), each dated at that list's antecedent valuation date (2008-04-01, 2015-04-01, 2021-04-01, 2024-04-01), with the 2010 list = 100. READ `basis` AND REPEAT IT when you quote a n |
market_volume_ranking | Rank postcode districts by transaction volume or median price over a trailing window — "the busiest districts in Greater London last year", "the priciest districts in SW". Restrict the candidate set with county ("GREATER LONDON") or area ("SW"); omit both to rank nationally. UK |
transactions_by_uprn | All HMLR Price Paid records joined to this UPRN, newest first. England & Wales only. Free. Keyed on a UPRN, not an address: call `address_autocomplete` (free) to narrow, then `address_resolve` to get one. |
property_summary | One-call summary of a property: what it is, what building it belongs to, and the headline attributes. Once you have the UPRN this is the first call to make for a specific property — it usually answers the question on its own, and `property_report` composes the rest. UK only. Cos |
property_history | Sold-price history for a property, with per-sale detail. Use `transactions_by_uprn` instead if you only need the raw HMLR rows. UK only. Free. Keyed on a UPRN, not an address: call `address_autocomplete` (free) to narrow, then `address_resolve` to get one. |
property_comps | Comparable sales in the same building or block. Preserve original price, sale date, UPRN and `attrs_source`. Backfilled/modelled floor areas are estimates: their derived price per square metre is not directly observed. An EPC room count is not automatically a bedroom count. Review a |
property_flood_risk | Environment Agency surface-water flood risk for a property. UK only. Free. Keyed on a UPRN, not an address: call `address_autocomplete` (free) to narrow, then `address_resolve` to get one. |
valuation_estimate | Automated value estimate for a property: a point value plus a range. Returns 404 when we hold no valuation for the UPRN — most often because the unit has no floor area on record, which the model requires. UK only. Free. Keyed on a UPRN, not an address: call `address_autocomplete` (f |
valuation_full | Full valuation block for a property: the value and its range, a monthly back-series (the value scaled by the local £/m² index, so it terminates at the headline figure by construction), a rental estimate where the district benchmark supports one, and a `trust_score` scoring the evide |
property_lease | Registered leases linked to this UPRN, with the selected longest-expiry record and up to ten alternatives, exact register property descriptions, title/record identifiers, source/link limitations and computed remaining term. UPRN linkage does not verify the legal demise: a garage, pa |
property_lease_batch | `property_lease` for up to 100 properties in one call, per-item outcomes (ok | no_lease | not_found | error) in input order. Charged per property answered — the sum of the single calls, never more. UK only. Costs 5 credits (5p). Keyed on a UPRN, not an address: call `address_autocom |
property_risk_report | What this property is in, and whether we actually checked: every designation and hazard flag THREE-VALUED with its source — flood (zone, historic flooding, defences, rivers-and-sea band, surface water), coal (high-risk area, past mining, surface hazard distance), heritage (listed, |
property_risk_report_batch | `property_risk_report` for up to 100 properties in one call, per-item outcomes (ok | not_found | error) in input order. Charged per property answered — the sum, never more. UK only. Costs 5 credits (5p). Keyed on a UPRN, not an address: call `address_autocomplete` (free) to narrow, |
comps_adjustments | The evidence behind a valuation, itemised: same-building comparable sales for the property, each with its registered price and date, its time adjustment on the published repeat-sales index (the district's own series, else the local authority's, else national) to the index's latest |
valuation_comparables | Comparable completed sales for a valuation, beyond the property's own building: Land Registry sales of the nearest units (within 1 km, the 60 months before `as_of`), widening from 250 m and 12 months until at least 6 qualify. A sale qualifies when it is the same broad type (flats wi |
valuation_rent_comparables | Comparable lets for a market rent, and the rent they indicate. ASKING rents from portal adverts: no achieved rents exist, so say "asking" when you quote them. Reads the rent adverts of the nearest units (within 1 km, last seen in the 24 months before `as_of`), widening from 250 m an |
subject_transaction_anchor | The property's own last registered sale carried by the published repeat-sales index to its latest settled month: the price paid, the date, the index factor applied and the anchored value. Where a property has sold, this is the strongest single piece of evidence a valuation has. |
valuation_accuracy | How accurate our valuations have been, measured the only way that cannot leak: each month, every registered sale the model had ALREADY valued is compared with the price actually paid — MdAPE (median absolute percentage error), PPE20 (share within 20%) and n, per asset class and |
planning_designations | Every planning designation affecting a location, in one call: conservation area, listed building, green belt, AONB, national park, flood zone, Article 4, brownfield, ancient woodland, heritage at risk, TPO, AQMA and scheduled monument. Give either `postcode` (full UK postcode) |
planning_check | The planning designation checks you choose, for one location, in one call. `checks` is any of: article_4, brownfield, ancient_woodland, heritage_at_risk, tpo, aqma, scheduled_monument, sssi, agricultural_land, flood_risk, green_belt, listed_buildings, aonb, national_park, conser |
planning_applications | The local planning authority for a location and its planning-portal URL. This returns WHERE to look, not the applications themselves — council portals are not machine-readable. Give either `postcode` or `location` as "lat,lng". UK only. Free. |
area_resolve | Resolve an area name or code ("Hackney", "E5") to its area_id, centroid and full hierarchy as breadcrumbs. Call this first when a question is about a named area rather than a specific address. UK only. Free. |
area_reverse_geocode | The area of a given type containing a coordinate. `type_id` is an area type UUID and is required — a point sits inside one area per geography layer, so without it the answer would be ambiguous. UK only. Free. |
ownership_by_title | Registered proprietor(s) for an HMLR title number. England & Wales only. Costs 15 credits (15p). |
ownership_by_company | Titles held by a company, by Companies House number. Useful for mapping a landlord's or developer's portfolio. England & Wales only. Costs 15 credits (15p). |
auction_lots | Individual UK auction lots: the guide price a lot was marketed at, whether it sold, the HAMMER PRICE where the auctioneer published one, and the net yield where quoted. Five auction houses, Allsop back to 1999. Nothing else on the market sells achieved auction outcomes through |
auction_stats | Quarterly UK auction statistics by postcode district: lots offered, lots sold, the sale rate, and average guide, achieved and net yield. Use this for the shape of a local auction market over time — is it clearing, are yields moving, is stock rising. For individual comparables use |
distressed_assets | Properties that keep going to auction and NEVER SELL — the distress screen. The clearest distress signal in the warehouse: a vendor who wants out and a market that has said no more than once, both on the public record. Ranked by how many separate auctions the lot has failed at, the |
cost_index | Construction cost index series for a development appraisal's cost side: `basis` is tender (tender price indices), output (output price indices), deflator (the construction deflator) or labour. Optional `sector` (residential, commercial, industrial, infrastructure, all, …), `freq` |
site_appraisal | Everything known about ONE site, assembled and judged — the site dossier. Give a `uprn` (from address_resolve or address_autocomplete) or a `land_id` (from sourcing_search). Returns in one call what would otherwise be six: * `site` — the land parcel: area, land use, built covera |
mortgage_rates | Average UK mortgage rates from the Bank of England: 2-year fixed, 3-year fixed at 75% LTV, and the standard variable rate. This is the BoE's published market average — an input to an appraisal, not a quote. It carries no applicant, product or lender, so do not present it as a r |
lha_rate | Local Housing Allowance for a postcode and bedroom category — the ceiling on housing benefit, and therefore the effective rent floor for a benefit-funded tenancy. Nothing else in this API tells you what the state will pay for a property. THE RATE IS WEEKLY. `rate_unit` says `gb |
council_tax_band | VOA council tax band for a property, from the official list. Every band is DECLARED — read from the VOA list, never inferred by a model. `band_source` states which, and a predicted band would arrive as a distinct value rather than folded in, because a caller cannot tell the two apa |
auction_discount | How far below our valuation UK auction actually clears — the one auction number nobody else can produce. An achieved hammer price against an automated valuation of the SAME property. EIG covers 530+ auctioneers to our six and sells API data, but runs no AVM; we have less auctio |
auction_comps | Auction comparables on ACHIEVED prices, each against our valuation. A portal tells you a property went to auction. This says what it MADE, and what our AVM thought it was worth at the same address — the difference between a comparable and a listing. Use it to judge whether a guide |
epc_certificates | Recent Energy Performance Certificates for a property, newest first: up to five mart certificates and up to five raw certificates. Raw readings include exact certificate URL/address, floor level, top-storey indicator, rooms, area and source dates. Compare source vintages; raw certif |
energy_profile | Energy composition of an area: EPC band mix, mains gas / electric / oil split, heat-pump penetration. `area_id` is the marts area id from `area_resolve` — pass `analytics_area_id`, not `area_id`, if the resolve response gives both. Percentages are of properties HOLDING an EPC, |
retrofit_candidates | Properties in an area with the most improvement headroom, ranked by potential efficiency. Defaults to the sub-standard bands E, F and G. A targeting tool: it returns a list to act on, not a fact about one property. Combine with `fuel='gas'` for the fossil-heated cohort that car |
solar_potential | Roof characteristics for solar screening: footprint area, roof shape and material, building height, and whether panels are already present. Returns NO generation estimate, deliberately. Pitch, orientation and shading are not in the warehouse, and a kWp figure derived from footprint |
agent_activity | Which estate agents actually transact in an area, ranked by listing count. Sale and rental are counted and averaged SEPARATELY — an asking price and a monthly rent do not combine into one median, so read `median_asking_price` and `median_monthly_rent` as answering different questio |
listing_history | Every marketing snapshot for a property: asking price over time, price reductions, days listed, status changes, agent, image count and whether it had a floor plan. `price_trajectory` appears only when at least two snapshots carry a price. No listing at all is a real answer, not |
equity_estimate | Current estimated value against the last recorded sale: gain in pounds and percent, and how long it has been held. NOT a loan-to-value: the warehouse holds no mortgage balance, so never describe the result as equity net of debt. The gain is NOMINAL — a 1998 purchase showing +74 |
long_held_high_equity | Long-held properties in an area carrying a large paper gain — the classic off-market cohort, ordered by gain rather than by value. Typical output for a London district: mid-1990s purchases at £23,000-37,000 now valued at £566,000-758,000. `area_id` is the marts area id from `a |
owner_profile | What the Land Registry shows for one proprietor: titles held, company status, country of incorporation, directors and PSCs where known. Give a company number for an EXACT match. A name is a fuzzy substring search — company names repeat across unrelated entities, so a name-matched |
building_physical | Physical form of the buildings a set of UPRNs sit in: height, volume, footprint area, floor count, construction and roof material, basement, green roof, solar panels, and the residential/commercial unit mix. `year_built` and `num_floors` are thinly populated and come back null |
area_stock_profile | Composition of the built stock in an area: unit counts, HMO share, mixed-use share, median building height and footprint, solar penetration. Medians, not means — one tower would skew an average height enough to make a low-rise district read as mid-rise. Percentages are whole percen |
mixed_use_buildings | Buildings holding BOTH residential and commercial units — the conversion and permitted-development cohort. Hard to source elsewhere: it is a property of the building's unit mix, not an attribute of any single property. UK only. Costs 30 credits (30p). |
plot_utilisation | Land parcels by size and how much of them is built on. Set `max_built_coverage` to 0.2 to find largely undeveloped plots. Parcels with NO measured coverage are excluded when you set a ceiling, rather than counted as empty — unknown coverage is not evidence of a vacant plot. Cov |
h3_density | Hex-binned stock and transaction density for map layers, at H3 resolution 8. DENSITY ONLY. There is no usable price per cell — the hex cube's price column is populated on about 2% of rows and its rental, EPC and per-m2 columns are empty. The response lists what is and is not availa |
sourcing_search | Find land parcels, property units or buildings matching search criteria — the sourcing tool. Give a `location` (place name, area code or postcode district) or a `bbox`. AREA LIMIT: one scan covers at most 150 km². A whole town or local authority (Harrogate, Cheltenham, Farnham, |
sourcing_owners | Resolve registered owners for parcels returned by `sourcing_search`. Uses the bulk HM Land Registry corporate and overseas ownership registers, so it names companies, public bodies and overseas entities. Individually owned titles are not in the bulk data and come back unresolved — |
query_semantic | Run a governed query against the semantic layer: choose an entity, then the metrics, dimensions and filters you want. Aliases are resolved to physical columns by the registry, so this cannot reach anything the semantic model does not expose. The result includes the generated SQL. |
asking_price_index_series | Hedonic ASKING-PRICE index for one postcode district, local authority or Great Britain, from portal listings (Rightmove ~95%), 2022M01 = 100, with 80% bands and posterior standard errors, smoothed toward the parent geography. Use this for "how have asking prices in W14 moved si |
asking_rent_index_series | Hedonic ASKING-RENT index for one postcode district, local authority or Great Britain, from portal lettings, 2022M01 = 100, with bands and SEs. This is the residential rent index; commercial_rent_index_series is the VOA one for commercial property. It is validated every build a |
listing_market_series | Monthly supply-side statistics from portal listings for one area, channel and bedroom band: listings added and reduced, reduction share (the market-temperature signal), asking price or rent median and quartiles, £/m² where a floor area is stated, new-build share, agent concentration |
listing_stock_series | Live listings on the market by day for one area, channel and bedroom band — the stock-on-market series, with the median age of the dated live stock, median asking price or rent, and the new-build count. The series began 2026-09-05 and grows by one point a day: the portal keeps |
property_planning_history | Planning history AT this property: applications linked to the unit or its building — each with decision, dates, appeal, CIL liability, development type and `match_level` (`unit`, `building`, or `nearby` within 25 m when nothing is linked) — a summary (approved / refused / withdrawn |
property_planning_history_batch | `property_planning_history` for up to 100 properties in one call, per-item outcomes (ok | no_applications | not_covered | not_found | error) in input order. Charged per property answered — the sum of the single calls, never more; not_covered rows are free. UK only. Costs 5 credi |
commercial_property | The commercial property report, by UPRN or by VOA UARN: the hereditament as the 2026 rating list describes it (rateable value, sector, description), the sector's rent index across the 2010/2017/2023/2026 lists and its capital index (national, plus the local authority where one exist |
build_cost | Build cost for a scheme: the sector's cost index with its 1- and 5-year movement, the regional location factor (`region`: NATIONAL, LONDON, SOUTH_EAST — an error lists what is loaded), the editorial on-cost percentages (prelims, contingency, overheads & profit, professional fees) |
data_coverage | The data-coverage register for a local authority — read it before the data: per-field non-null and source shares over every unit in the authority (floor area, bedrooms, year built, EPC, last sale, tenure…), which designation flags were checked and how fully, how many units carry |
sourcing_strategies | The nine sourcing strategies as data — read this BEFORE running `sourcing_search` in strategy mode. Each preset publishes its thesis, its filters (every key overridable, with the default and the unit), its ranking components with weights and scales, the feature columns it reads, |
sourcing_live_listings | What is on the market RIGHT NOW in these postcode districts, each listing enriched against our own record of the property: asking price against our valuation (`asking_vs_avm_pct`, `discount_to_avm_gbp`), £/m², gross yield on both the asking and valuation bases, unexpired lease years |
sourcing_offmarket_owners | Who owns the stock in an area, ranked as an approach list: units held here, total value and equity, average and longest years held, how many of their units are on a short lease or already on the market, company status, and the signals behind the rank. Pass a `strategy` to rank the o |
land_assembly | The parcels adjacent to one parcel and who owns each — the first question of a site assembly. Returns each neighbour with its area, land use, constraints and registered proprietor, plus a `combined` block: total area in m² and hectares, the number of distinct owners, how many neighb |
planning_precedents | What happened to applications like this one nearby — the planning precedent record. Give a point (`lat`/`lon`) or an `lpa_code`, optionally narrowed by `application_types` (substrings of the authority's own type labels, e.g. ["Householder"]). Returns the approval RATE with its |
commercial_market | The commercial market for a sector and a place: the repeat-sales CAPITAL index, the VOA rating-list RENT index, and the rated stock standing in the authority with its hereditament count, total and median rateable value. THE TWO INDICES ARE NOT COMPARABLE and must never be plotted o |
sourcing_commercial | Rated commercial stock in a local authority, filtered by sector and rateable value — the commercial sourcing lane. Each row carries its rateable value, an income-basis value, the freeholder where a title links, and any auction history. NO £/m² IS PUBLISHED and you should not co |
parcel_lookup | One land parcel in full: its INSPIRE id, title number and OS id, area and land use, the registered proprietor where a title links, the units standing on it, plot utilisation, and every constraint flag. Address it by `parcel_id`, `inspire_id`, `title_number` or `uprn` — whicheve |
changes_since | What changed since you last looked — the portal change feed. Pass the `next_cursor` from your previous call to get only what is new; on a first call give a scope (`postcode_districts` or `uprns`) or a `since` date, because an unbounded read of a 14.6-million-row feed is refused. |
property_rental_estimate | What this property would let for, and on what basis. Always quote the basis: `unit_asking` is the property's OWN live rental listing (an asking rent, not an achieved one); `area_asking` is the median asking rent for its bedroom band in its postcode district — a locality statistic ap |
property_energy_retrofit | The energy picture for one property: current rating against the certificate's own potential, the points and letter bands available, the fabric and heating the assessor recorded, and MEES. MEES IS A LEGAL BAR, NOT A VALUATION NOTE. An F or G cannot lawfully be let on a new or co |
property_report | Everything we hold about one property, as one document — summary, the registered lease, the risk report with every flag three-valued, a rental estimate with its basis, the energy picture, and the planning decisions nearby. One price for the composition, cheaper than the sections bou |
area_report | The market for one area, as one document: sourcing readiness per strategy from the coverage register, the commercial capital and rent indices with rated stock, the planning decision record for the authority, and the live listing stock. THE TWO SCOPES ARE NOT INTERCHANGEABLE. Re |
property_media | Photographs, floorplans, EPC graphs and brochures for a property, from the listings we have crawled. Narrow with `types` — a comma-separated list of `image`, `floorplan`, `epc`, `brochure`, `virtual_tour`. EVERY LINK IS OURS AND EVERY LINK EXPIRES. Do not store them; call this |