- Data
- MCP server
- Market data
- Commercial capital index
Commercial capital index
commercial_index_seriesRepeat-sales CAPITAL index for UK commercial property, quarterly, 1995Q1 = 100.
Same call over REST
Market commercial index/v1/market/commercial-indexNot connected yet? Connect your assistant. Sign in with your MarketCode account; no API key needed.
Reference
What commercial_index_series answers
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 authorities with enough pooled repeat sales. There is deliberately NO local x sector series — a local sector cell is too thin to carry an index — so for "office values in Manchester" call twice, sector="OFFICE" (national) and area="Manchester" (ALL), and present the two side by side; each is real.
area: omit for national; a local authority NAME ("Manchester", "South Hams") for the city scope. sector: omit for ALL, or a sector name. start / end: "2015", "2015Q1", "2015-Q1" or "2015-06"; end is inclusive.
provenance.method is repeat_sales for the raw estimator and repeat_sales_shrunk where thin quarters were blended toward the national increment; n_pairs per quarter is the straddle count, and a quarter with few pairs is carried by the blend. An empty series with available_sectors means the area exists but that sector is not published for it; an unknown area is an error naming the nearest matches.
This is a capital-value index. For RENTS use commercial_rent_index_series; the two are not interchangeable (capital = rent / yield, and yields moved). UK only.
Inputs
Before you call it
- sector
- Sectors follow the VOA classification (OFFICE, RETAIL, INDUSTRIAL_WAREHOUSE, HOTEL and so on). Omit the argument for all sectors; the response names the sectors published for an area when the one you asked for is not.
Example
An example call to commercial_index_series
Use the MarketCode tool commercial_index_series with {"sector":"OFFICE","start":"2022","limit":6} and show me the result.{
"country": "UK",
"query": {
"sector": "OFFICE",
"from": "2022",
"limit": 6
},
"data": {
"scope": "national",
"sector": "OFFICE",
"area": {
"area_key": "NATIONAL",
"area_name": "National"
},
"frequency": "quarterly",
"series": [
{
"period": "2025Q2",
"value": 386.95694289407993,
"yoy_pct": 10.305182039822425,
"n_pairs": 46
},
{
"period": "2025Q3",
"value": 421.2215887689076,
"yoy_pct": 0.4333821756687728,
"n_pairs": 33
},
{
"period": "2025Q4",
"value": 421.6408820011818,
"yoy_pct": -0.13427158657365323,
"n_pairs": 25
},
"… 3 more"
],
"provenance": {
"source_table": "marts_facts.commercial_index",
"kind": "capital_value",
"method": "repeat_sales_shrunk",
"base": "1995Q1 = 100",
"n_periods": 6,
"n_pairs_total": 3666,
"first_period": "2025Q2",
"last_period": "2026Q3",
"built_at": "2026-08-31T22:04:19.549422",
"available_sectors": null
},
"notes": [
"method is repeat_sales_shrunk: thin quarters are blended toward the national increment (empirical Bayes), so turns the cell did not observe follow the national…"
],
"source": "robosapien",
"cached": true,
"time_ms": 0.4
},
"credits_charged": 0
}A real response, captured from production and trimmed: arrays to three items, long strings shortened, volatile keys dropped.
Inputs
Arguments commercial_index_series takes
| Name | Type | Required | Description |
|---|---|---|---|
| sector | string | No | |
| area | string | No | |
| start | string | No | |
| end | string | No | |
| limit | integer | No | Default: 200 |
Response
What comes back
| Field | Type | Example |
|---|---|---|
| country | string | UK |
| query | object | |
| query.sector | string | OFFICE |
| query.from | string | 2022 |
| query.limit | integer | 6 |
| data | object | |
| data.scope | string | national |
| data.sector | string | OFFICE |
| data.area | object | |
| data.area.area_key | string | NATIONAL |
| data.area.area_name | string | National |
| data.frequency | string | quarterly |
| data.series | array | |
| data.series[].period | string | 2025Q2 |
| data.series[].value | number | 386.95694289407993 |
| data.series[].yoy_pct | number | 10.305182039822425 |
| data.series[].n_pairs | integer | 46 |
| data.provenance | object | |
| data.provenance.source_table | string | marts_facts.commercial_index |
| data.provenance.kind | string | capital_value |
| data.provenance.method | string | repeat_sales_shrunk |
| data.provenance.base | string | 1995Q1 = 100 |
| data.provenance.n_periods | integer | 6 |
| data.provenance.n_pairs_total | integer | 3666 |
| data.provenance.first_period | string | 2025Q2 |
| data.provenance.last_period | string | 2026Q3 |
| data.provenance.built_at | string | 2026-08-31T22:04:19.549422 |
| data.provenance.available_sectors | null | |
| data.notes | array | |
| data.source | string | robosapien |
| data.cached | boolean | true |
| data.time_ms | number | 0.4 |
| credits_charged | integer | 0 |
Fields observed in the example response above; a field the example did not exercise is not listed.
Usage
How to run commercial_index_series in your assistant
Ask your assistant in plain English, for example:
"Use the MarketCode tool commercial_index_series for <address or area>.
Show the result and the credits charged."
The arguments the assistant will send, for the example on this page:
{"sector":"OFFICE","start":"2022","limit":6}The connect steps for Claude, ChatGPT, Codex, Cursor and Claude Code are on the MCP page.
Skills
Skills that use commercial_index_series
- Valuation report: An indicative valuation for one address: the range, the comparables and adjustments, the index position, the EPC, flood and planning context, and the reasoning, with every figure cited to the tool it came from.
- Area insights: A market brief for any UK area: the published indices, volumes, listing stock, agent activity and auction outcomes, compared and ranked against neighbours.
- Deal analysis: A first-pass appraisal of a site or asset: plot utilisation, planning position, market evidence, value and a residual against the cost assumptions you supply.
Price and licence
What it costs, and where the data comes from
commercial_index_series is free over MCP and over REST, and the two surfaces share one credit balance. Free calls need a signed-in account or an API key and appear in your usage, but they never touch your balance.
Credits are granted on sign-up and bought in packs; the pricing page lists every call.
Computed by MarketCode from
- HM Land Registry
Price Paid Data
Open Government Licence v3 · England and Wales
How the model or index is built, and where it is weak, is on the methodology page.
Related
Tools used with commercial_index_series
- Commercial rent indexFree
commercial_rent_index_seriesCommercial 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.Named in the description - Asking-price index (portal listings)Free
asking_price_index_seriesHedonic 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.Same category - Asking-rent index (portal listings, ONS-validated)Free
asking_rent_index_seriesHedonic 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.Same category - Commercial capital and rent indices for a placeFree
commercial_marketThe 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.Same category - Index forecast h1–h7 with bandsFree
market_forecastThe 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 — nothing beyond it is offered, and a forecast is a projection of the smoothed repeat-sales index, not a valuation of any property. UK only.Same category - House price index seriesFree
market_index_seriesThe 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.Same category
FAQ
Questions about commercial_index_series
How much does `commercial_index_series` cost?
+
commercial_index_series is free over MCP and over REST, and the two surfaces share one credit balance. Free calls need a signed-in account or an API key and appear in your usage, but they never touch your balance.
Which assistants can run `commercial_index_series`?
+
Any MCP client: Claude (claude.ai, Claude Desktop, Claude Code), ChatGPT in developer mode, Codex and Cursor, each documented on the MCP page. You sign in with your MarketCode account over OAuth; there is no key to paste, and the connection is read-only.
Where does the data come from?
+
Computed by MarketCode from HM Land Registry price paid data. Coverage is the UK. The methodology page describes how the model or index is built.
Does `commercial_index_series` change anything?
+
No. The tool is annotated read-only on the server, so it never writes to your data or ours and an assistant can call it without a confirmation step.
Try commercial_index_series in your assistant.
30-minute call. We'll connect your assistant live on a real address.