Koskamo

Homedex MCP

An official MCP server providing read-only access to a UK home search index, including property listings for sale and rent, and HM Land Registry sold prices. It allows AI agents to search for homes, retrieve specific listing details, check area statistics, and verify service health without requiring authentication.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Homedex MCP logo, by Ink One LtdVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by Ink One Ltd
MCP endpoint (Streamable HTTP)
https://api.homedex.uk/mcp
Vendor documentation

What its tools do

8 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

8 of 8 have a description · 8 of 8 declare behavior hints · 6 of 7 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to homedex.uk ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Search for homes for sale or to let in a specific town or postcode
  • Retrieve detailed information about a single property by its ID
  • Get sold price statistics for a specific area or postcode
  • Check recent sales near a specific location

Source and maintenance

Vendor evidenceRegistry 1.0.1

Protocol and capabilities

Server
homedex 0.1.0
MCP protocol negotiated in check
2025-11-25
Tools
8 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Homedex is a free, open index of UK homes: homes for sale and to let from participating estate agents, plus HM Land Registry sold prices and area figures, in the areas Homedex covers (the coverage tool lists them). Send people to each listing's agent_url for viewings and enquiries: it goes straight to the listing on the estate agent's own website (via a Homedex link that tells the agent the visit came from Homedex). Homedex doesn't take enquiries. Always pass on the attribution in each result. Each listing has last_checked, when Homedex last confirmed it was still on the agent's website: mention it (e.g. "still listed as of 8 October"), and suggest checking with the agent that a home is still available. Answer from what Homedex's tools return: don't add details about a home from anywhere else or guess them; if something isn't in the result, say so and point to the agent's link. What Homedex can't do, so say so plainly instead of trying: it lists UK homes only, so it can't help with homes outside the UK. It can't book viewings, send messages or pass anyone's name, phone number or email to an agent, so don't ask for or offer to pass on anyone's details: give the home's agent_url (and the agent's phone, if listed) so the person can contact the agent themselves. It has no information about who owns a home or anyone's contact details, so don't look up owners or their contact details elsewhere either: say Homedex can't help, and mention that HM Land Registry title records show a property's registered owner.

Tools

8 advertised

area_stats — Sold prices and energy ratings for an area
Advertised by the server during the last successful anonymous check.
Advertised read-only

Sold-price figures for a UK postcode area from HM Land Registry: median and quartile prices over the last 12 months (overall and by detached, semi-detached, terraced, flat), medians by year, and by postcode sector, plus energy-rating counts where loaded. Use it for questions like 'what do flats sell for in CT20?' or 'how have prices changed in Canterbury CT1?'. Pass an outcode (the first half of a postcode, e.g. CT20), a full postcode, or a town that has a single outcode; for a town with several (Folkestone: CT18, CT19, CT20) the reply lists them, so ask about one. Only covers areas Homedex has loaded; if an area isn't covered, the reply lists the ones that are. These are sold prices, not asking prices or valuations.

area_stats input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "area"
  ],
  "properties": {
    "area": {
      "type": "string",
      "description": "An outcode such as CT20, a postcode such as CT20 3TZ, or a town with a single outcode"
    }
  }
}
area_stats output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "outcode",
    "name",
    "url",
    "location",
    "local_authority",
    "sold_prices",
    "energy_ratings",
    "licence",
    "attribution"
  ],
  "properties": {
    "url": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "licence": {
      "type": "object",
      "required": [
        "name",
        "url"
      ],
      "properties": {
        "url": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      },
      "additionalProperties": {}
    },
    "outcode": {
      "type": "string"
    },
    "location": {
      "type": "object",
      "required": [
        "lat",
        "lng"
      ],
      "properties": {
        "lat": {
          "type": "number"
        },
        "lng": {
          "type": "number"
        }
      },
      "additionalProperties": {}
    },
    "attribution": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Attribution to show alongside this data"
    },
    "sold_prices": {
      "type": "object",
      "required": [
        "from",
        "updated_at",
        "note",
        "last_12_months",
        "by_year",
        "sectors",
        "recent_sales"
      ],
      "properties": {
        "from": {
          "type": [
            "string",
            "null"
          ]
        },
        "note": {
          "type": "string"
        },
        "by_year": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "year",
              "count",
              "median"
            ],
            "properties": {
              "year": {
                "type": "string"
              },
              "count": {
                "type": "number"
              },
              "median": {
                "type": "number"
              }
            },
            "additionalProperties": {}
          }
        },
        "sectors": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "sector",
              "count",
              "median"
            ],
            "properties": {
              "count": {
                "type": "number"
              },
              "median": {
                "type": "number"
              },
              "sector": {
                "type": "string"
              }
            },
            "additionalProperties": {}
          }
        },
        "updated_at": {
          "type": [
            "string",
            "null"
          ]
        },
        "recent_sales": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "id",
              "price",
              "date",
              "address",
              "postcode",
              "property_type",
              "new_build",
              "tenure"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "date": {
                "type": "string"
              },
              "price": {
                "type": "number"
              },
              "tenure": {
                "type": "string"
              },
              "address": {
                "type": "string"
              },
              "postcode": {
                "type": "string"
              },
              "new_build": {
                "type": "boolean"
              },
              "property_type": {
                "type": "string"
              }
            },
            "additionalProperties": {}
          }
        },
        "last_12_months": {
          "type": "object",
          "required": [
            "all",
            "detached",
            "semi_detached",
            "terraced",
            "flat",
            "other"
          ],
          "properties": {
            "all": {
              "anyOf": [
                {
                  "type": "object",
                  "required": [
                    "count",
                    "median",
                    "p25",
                    "p75"
                  ],
                  "properties": {
                    "p25": {
                      "type": "number"
                    },
                    "p75": {
                      "type": "number"
                    },
                    "count": {
                      "type": "number"
                    },
                    "median": {
                      "type": "number"
                    }
                  },
                  "additionalProperties": {}
                },
                {
                  "type": "null"
                }
              ]
            },
            "flat": {
              "anyOf": [
                {
                  "type": "object",
                  "required": [
                    "count",
                    "median",
                    "p25",
                    "p75"
                  ],
                  "properties": {
                    "p25": {
                      "type": "number"
                    },
                    "p75": {
                      "type": "number"
                    },
                    "count": {
                      "type": "number"
                    },
                    "median": {
                      "type": "number"
                    }
                  },
                  "additionalProperties": {}
                },
                {
                  "type": "null"
                }
              ]
            },
            "other": {
              "anyOf": [
                {
                  "type": "object",
                  "required": [
                    "count",
                    "median",
                    "p25",
                    "p75"
                  ],
                  "properties": {
                    "p25": {
                      "type": "number"
                    },
                    "p75": {
                      "type": "number"
                    },
                    "count": {
                      "type": "number"
                    },
                    "median": {
                      "type": "number"
                    }
                  },
                  "additionalProperties": {}
                },
                {
                  "type": "null"
                }
              ]
            },
            "detached": {
              "anyOf": [
                {
                  "type": "object",
                  "required": [
                    "count",
                    "median",
                    "p25",
                    "p75"
                  ],
                  "properties": {
                    "p25": {
                      "type": "number"
                    },
                    "p75": {
                      "type": "number"
                    },
                    "count": {
                      "type": "number"
                    },
                    "median": {
                      "type": "number"
                    }
                  },
                  "additionalProperties": {}
                },
                {
                  "type": "null"
                }
              ]
            },
            "terraced": {
              "anyOf": [
                {
                  "type": "object",
                  "required": [
                    "count",
                    "median",
                    "p25",
                    "p75"
                  ],
                  "properties": {
                    "p25": {
                      "type": "number"
                    },
                    "p75": {
                      "type": "number"
                    },
                    "count": {
                      "type": "number"
                    },
                    "median": {
                      "type": "number"
                    }
                  },
                  "additionalProperties": {}
                },
                {
                  "type": "null"
                }
              ]
            },
            "semi_detached": {
              "anyOf": [
                {
                  "type": "object",
                  "required": [
                    "count",
                    "median",
                    "p25",
                    "p75"
                  ],
                  "properties": {
                    "p25": {
                      "type": "number"
                    },
                    "p75": {
                      "type": "number"
                    },
                    "count": {
                      "type": "number"
                    },
                    "median": {
                      "type": "number"
                    }
                  },
                  "additionalProperties": {}
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": {}
        }
      },
      "additionalProperties": {}
    },
    "energy_ratings": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "updated_at",
            "bands"
          ],
          "properties": {
            "bands": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "band",
                  "count",
                  "share"
                ],
                "properties": {
                  "band": {
                    "type": "string"
                  },
                  "count": {
                    "type": "number"
                  },
                  "share": {
                    "type": "number"
                  }
                },
                "additionalProperties": {}
              }
            },
            "updated_at": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "additionalProperties": {}
        },
        {
          "type": "null"
        }
      ]
    },
    "local_authority": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "code",
            "name"
          ],
          "properties": {
            "code": {
              "type": "string"
            },
            "name": {
              "type": "string"
            }
          },
          "additionalProperties": {}
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": {}
}
area_stats annotations
{
  "title": "Sold prices and energy ratings for an area",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
nearby_sold — Recent sales near a postcode
Advertised by the server during the last successful anonymous check.
Advertised read-only

Recent standard sales registered with HM Land Registry near a UK postcode, newest first, with price, date, address, property type, tenure and distance. Use it for 'what have houses on this street / near this postcode sold for?'. Land Registry records usually appear 1–3 months after completion. Only covers areas Homedex has loaded.

nearby_sold input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "postcode"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 50,
      "minimum": 1,
      "description": "Most sales to return (default 20)"
    },
    "months": {
      "type": "integer",
      "maximum": 72,
      "minimum": 1,
      "description": "How far back (default 24 months)"
    },
    "postcode": {
      "type": "string",
      "description": "A full UK postcode, e.g. CT20 3TZ"
    },
    "radius_km": {
      "type": "number",
      "maximum": 3,
      "description": "Search radius in km (default 1, max 3)",
      "exclusiveMinimum": 0
    },
    "property_type": {
      "enum": [
        "detached",
        "semi_detached",
        "terraced",
        "flat",
        "other"
      ],
      "type": "string",
      "description": "Only this property type"
    }
  }
}
nearby_sold output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "note": {
      "type": "string"
    },
    "sales": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "price",
          "date",
          "address",
          "postcode",
          "property_type",
          "new_build",
          "tenure",
          "distance_km"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "date": {
            "type": "string"
          },
          "price": {
            "type": "number"
          },
          "tenure": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "postcode": {
            "type": "string"
          },
          "new_build": {
            "type": "boolean"
          },
          "distance_km": {
            "type": "number"
          },
          "property_type": {
            "type": "string"
          }
        },
        "additionalProperties": {}
      }
    },
    "months": {
      "type": "number"
    },
    "licence": {
      "type": "object",
      "required": [
        "name",
        "url"
      ],
      "properties": {
        "url": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      },
      "additionalProperties": {}
    },
    "message": {
      "type": "string",
      "description": "Set instead of the other fields when nothing was found"
    },
    "location": {
      "type": "object",
      "required": [
        "lat",
        "lng"
      ],
      "properties": {
        "lat": {
          "type": "number"
        },
        "lng": {
          "type": "number"
        }
      },
      "additionalProperties": {}
    },
    "postcode": {
      "type": "string"
    },
    "radius_km": {
      "type": "number"
    },
    "attribution": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Attribution to show alongside this data"
    }
  },
  "additionalProperties": {}
}
nearby_sold annotations
{
  "title": "Recent sales near a postcode",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search_listings — Search homes for sale or to let
Advertised by the server during the last successful anonymous check.
Advertised read-only

Live homes for sale or to let from participating UK estate agents in a town, outcode or postcode area, with price, bedrooms, type, one photo, the agent's link and when Homedex last checked it was still listed. Use for 'find me a 3-bed flat in Folkestone under £300k'. Up to 20 results, every agent taking turns (fair to all agents), each turn its most detailed then newest listing; pass sort for a plain price or date order, plus how many fit in all and the next 30 as one line each (more_matches): pick the homes that best fit what the person asked for.

search_listings input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "area": {
      "type": "string",
      "description": "A town (Folkestone), outcode (CT20) or postcode (CT20 3TZ). Needed unless near_postcode is given"
    },
    "sort": {
      "enum": [
        "recent",
        "price_asc",
        "price_desc",
        "newest"
      ],
      "type": "string",
      "description": "recent (the default: every agent taking turns so no one agent fills the list, each turn its most detailed then newest listing), cheapest first, most expensive first, or newest regardless of agent"
    },
    "limit": {
      "type": "integer",
      "maximum": 20,
      "minimum": 1
    },
    "cursor": {
      "type": "string",
      "maxLength": 200,
      "description": "For more results: the next_cursor from the previous answer, same filters"
    },
    "channel": {
      "enum": [
        "sale",
        "rent"
      ],
      "type": "string",
      "description": "sale (default) or rent"
    },
    "keywords": {
      "type": "string",
      "maxLength": 100,
      "description": "Words the listing must mention, e.g. garden parking"
    },
    "max_beds": {
      "type": "integer",
      "maximum": 20,
      "minimum": 0
    },
    "min_beds": {
      "type": "integer",
      "maximum": 20,
      "minimum": 0
    },
    "max_price": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": 0
    },
    "min_price": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": 0,
      "description": "Pounds (monthly rent for rentals)"
    },
    "added_since": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Only homes Homedex first saw on or after this date (YYYY-MM-DD), for 'what's new since…'"
    },
    "within_miles": {
      "type": "number",
      "maximum": 10,
      "description": "With near_postcode: how far from it, in miles (default 2, up to 10)",
      "exclusiveMinimum": 0
    },
    "near_postcode": {
      "type": "string",
      "maxLength": 10,
      "description": "Only homes near this full postcode (e.g. CT20 1AA), within within_miles"
    },
    "property_type": {
      "enum": [
        "detached",
        "semi_detached",
        "terraced",
        "end_terrace",
        "flat",
        "maisonette",
        "bungalow",
        "cottage"
      ],
      "type": "string"
    }
  }
}
search_listings output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "area",
    "results",
    "sold_prices"
  ],
  "properties": {
    "area": {
      "type": "object",
      "required": [
        "query",
        "outcodes"
      ],
      "properties": {
        "query": {
          "type": "string"
        },
        "outcodes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": {}
    },
    "near": {
      "type": "object",
      "required": [
        "postcode",
        "within_miles"
      ],
      "properties": {
        "postcode": {
          "type": "string"
        },
        "within_miles": {
          "type": "number"
        }
      },
      "additionalProperties": {}
    },
    "total": {
      "type": "string",
      "description": "How many homes fit in all, e.g. '312' or '500 or more'"
    },
    "display": {
      "type": "string",
      "description": "Only in apps that show Homedex's home cards: how to show these homes"
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "homedex_no",
          "url",
          "agent_url",
          "claimed",
          "status",
          "channel",
          "price",
          "summary",
          "property_type",
          "bedrooms",
          "address",
          "photo",
          "first_seen"
        ],
        "properties": {
          "url": {
            "type": "string"
          },
          "agent": {
            "type": "object",
            "required": [
              "name",
              "branch",
              "website",
              "url",
              "logo"
            ],
            "properties": {
              "url": {
                "type": "string"
              },
              "logo": {
                "anyOf": [
                  {
                    "type": "object",
                    "required": [
                      "url",
                      "width",
                      "height"
                    ],
                    "properties": {
                      "url": {
                        "type": "string"
                      },
                      "width": {
                        "type": "number"
                      },
                      "height": {
                        "type": "number"
                      }
                    },
                    "additionalProperties": {}
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "name": {
                "type": "string"
              },
              "branch": {
                "type": "string"
              },
              "website": {
                "type": "string"
              }
            },
            "additionalProperties": {}
          },
          "photo": {
            "type": [
              "string",
              "null"
            ],
            "description": "This home's own main photo. Show only this as its picture, never one from an image search; null means show none"
          },
          "price": {
            "type": "object",
            "required": [
              "amount",
              "currency",
              "qualifier",
              "frequency",
              "display"
            ],
            "properties": {
              "amount": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "display": {
                "type": "string"
              },
              "currency": {
                "type": "string"
              },
              "frequency": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "qualifier": {
                "type": "string"
              }
            },
            "additionalProperties": {}
          },
          "status": {
            "type": "string"
          },
          "address": {
            "type": "object",
            "required": [
              "display",
              "postcode",
              "outcode"
            ],
            "properties": {
              "display": {
                "type": "string"
              },
              "outcode": {
                "type": "string"
              },
              "postcode": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "additionalProperties": {}
          },
          "channel": {
            "type": "string"
          },
          "claimed": {
            "type": "boolean",
            "description": "true: the agency agreed to be on Homedex. false: listed from the agency's own website (facts and a link) before it joined"
          },
          "summary": {
            "type": "string"
          },
          "bedrooms": {
            "type": [
              "number",
              "null"
            ]
          },
          "agent_url": {
            "type": "string",
            "description": "Send every enquiry here: the listing on the agent's own website"
          },
          "first_seen": {
            "type": "string"
          },
          "homedex_no": {
            "type": "string"
          },
          "last_checked": {
            "type": "string",
            "description": "When Homedex last confirmed the home was still on the agent's website"
          },
          "property_type": {
            "type": "string"
          },
          "distance_miles": {
            "type": "number",
            "description": "Only with near_postcode: miles from it"
          }
        },
        "additionalProperties": {}
      }
    },
    "next_cursor": {
      "type": [
        "string",
        "null"
      ],
      "description": "Pass as cursor, with the same filters, for more results; null when that's all"
    },
    "sold_prices": {
      "type": "string"
    },
    "more_matches": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The next homes that fit, one line each (Homedex number first): pick any that suit the person better, and use get_listing for details"
    }
  },
  "additionalProperties": {}
}
search_listings annotations
{
  "title": "Search homes for sale or to let",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_listing — Full details of one home
Advertised by the server during the last successful anonymous check.
Advertised read-only

Everything about one listing by its Homedex number (e.g. HX-CT20-00084): price, rooms, tenure, floor area, energy rating, council tax band, description, all photos, the agent, when Homedex last checked it was still on the agent's website (last_checked), and recent sales within 500 m from HM Land Registry. Send the person to agent_url to book a viewing.

get_listing input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "homedex_no"
  ],
  "properties": {
    "homedex_no": {
      "type": "string",
      "description": "The Homedex number, e.g. HX-CT20-00084"
    }
  }
}
get_listing output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "homedex_no",
    "status",
    "area_url"
  ],
  "properties": {
    "url": {
      "type": "string"
    },
    "note": {
      "type": "string"
    },
    "agent": {
      "type": "object",
      "required": [
        "name",
        "branch",
        "phone",
        "website",
        "url",
        "logo"
      ],
      "properties": {
        "url": {
          "type": "string"
        },
        "logo": {
          "anyOf": [
            {
              "type": "object",
              "required": [
                "url",
                "width",
                "height"
              ],
              "properties": {
                "url": {
                  "type": "string"
                },
                "width": {
                  "type": "number"
                },
                "height": {
                  "type": "number"
                }
              },
              "additionalProperties": {}
            },
            {
              "type": "null"
            }
          ]
        },
        "name": {
          "type": "string"
        },
        "phone": {
          "type": [
            "string",
            "null"
          ]
        },
        "branch": {
          "type": "string"
        },
        "website": {
          "type": "string"
        }
      },
      "additionalProperties": {}
    },
    "price": {
      "type": "object",
      "required": [
        "amount",
        "currency",
        "qualifier",
        "frequency",
        "display"
      ],
      "properties": {
        "amount": {
          "type": [
            "number",
            "null"
          ]
        },
        "display": {
          "type": "string"
        },
        "currency": {
          "type": "string"
        },
        "frequency": {
          "type": [
            "string",
            "null"
          ]
        },
        "qualifier": {
          "type": "string"
        }
      },
      "additionalProperties": {}
    },
    "images": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "url",
          "kind",
          "caption"
        ],
        "properties": {
          "url": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "caption": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": {}
      }
    },
    "status": {
      "type": "string"
    },
    "tenure": {
      "type": "string"
    },
    "address": {
      "type": "object",
      "required": [
        "display",
        "postcode",
        "outcode",
        "location"
      ],
      "properties": {
        "display": {
          "type": "string"
        },
        "outcode": {
          "type": "string"
        },
        "location": {
          "anyOf": [
            {
              "type": "object",
              "required": [
                "lat",
                "lng"
              ],
              "properties": {
                "lat": {
                  "type": "number"
                },
                "lng": {
                  "type": "number"
                }
              },
              "additionalProperties": {}
            },
            {
              "type": "null"
            }
          ]
        },
        "postcode": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "additionalProperties": {}
    },
    "channel": {
      "type": "string"
    },
    "claimed": {
      "type": "boolean",
      "description": "true: the agency agreed to be on Homedex. false: listed from the agency's own website (facts and a link) before it joined"
    },
    "licence": {
      "type": "object",
      "required": [
        "name",
        "url"
      ],
      "properties": {
        "url": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      },
      "additionalProperties": {}
    },
    "message": {
      "type": "string",
      "description": "Set when the home is no longer available"
    },
    "summary": {
      "type": "string"
    },
    "area_url": {
      "type": "string"
    },
    "bedrooms": {
      "type": [
        "number",
        "null"
      ]
    },
    "features": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "agent_url": {
      "type": "string",
      "description": "Send every enquiry here: the listing on the agent's own website"
    },
    "bathrooms": {
      "type": [
        "number",
        "null"
      ]
    },
    "epc_rating": {
      "type": [
        "string",
        "null"
      ]
    },
    "first_seen": {
      "type": "string"
    },
    "homedex_no": {
      "type": "string"
    },
    "receptions": {
      "type": [
        "number",
        "null"
      ]
    },
    "attribution": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Attribution to show alongside this data"
    },
    "description": {
      "type": "string"
    },
    "nearby_sold": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "price",
          "date",
          "address",
          "postcode",
          "property_type",
          "new_build",
          "tenure",
          "distance_km"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "date": {
            "type": "string"
          },
          "price": {
            "type": "number"
          },
          "tenure": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "postcode": {
            "type": "string"
          },
          "new_build": {
            "type": "boolean"
          },
          "distance_km": {
            "type": "number"
          },
          "property_type": {
            "type": "string"
          }
        },
        "additionalProperties": {}
      }
    },
    "last_checked": {
      "type": "string",
      "description": "When Homedex last confirmed the home was still on the agent's website"
    },
    "property_type": {
      "type": "string"
    },
    "floor_area_sqm": {
      "type": [
        "number",
        "null"
      ]
    },
    "council_tax_band": {
      "type": [
        "string",
        "null"
      ]
    }
  },
  "additionalProperties": {}
}
get_listing annotations
{
  "title": "Full details of one home",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
coverage — How complete Homedex is in an area
Advertised by the server during the last successful anonymous check.
Advertised read-only

An ESTIMATE of how much of an area's homes for sale Homedex has, and how many of the local estate agents it knows of have joined, for a town, outcode or postcode (and its local authority). Use it to say honestly how complete answers are, e.g. 'Homedex covers about 55% of homes for sale in CT20'. Always describe the figure as an estimate.

coverage input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "area"
  ],
  "properties": {
    "area": {
      "type": "string",
      "description": "A town (Folkestone), outcode (CT20) or postcode (CT20 3TZ)"
    }
  }
}
coverage output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "areas": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "area_type",
          "area_code",
          "name",
          "listings_dexed",
          "listings_estimated_for_sale",
          "percent_dexed_estimate",
          "agents_dexed",
          "agents_known",
          "band",
          "updated_at",
          "is_estimate",
          "summary"
        ],
        "properties": {
          "band": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "area_code": {
            "type": "string"
          },
          "area_type": {
            "type": "string"
          },
          "updated_at": {
            "type": "string"
          },
          "is_estimate": {
            "type": "boolean",
            "const": true
          },
          "agents_dexed": {
            "type": "number"
          },
          "agents_known": {
            "type": "number"
          },
          "listings_dexed": {
            "type": "number"
          },
          "percent_dexed_estimate": {
            "type": [
              "number",
              "null"
            ]
          },
          "listings_estimated_for_sale": {
            "type": [
              "number",
              "null"
            ]
          }
        },
        "additionalProperties": {}
      }
    },
    "message": {
      "type": "string",
      "description": "Set instead of areas when there are no figures yet"
    }
  },
  "additionalProperties": {}
}
coverage annotations
{
  "title": "How complete Homedex is in an area",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
health — Check Homedex is working
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns ok and the running version. For monitoring; not needed for answers.

health input schema
{
  "type": "object",
  "properties": {}
}
health output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "status",
    "release"
  ],
  "properties": {
    "status": {
      "type": "string"
    },
    "release": {
      "type": "string"
    }
  },
  "additionalProperties": {}
}
health annotations
{
  "title": "Check Homedex is working",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
search — Search Homedex homes (one plain-English query)
Advertised by the server during the last successful anonymous check.
Advertised read-only

Searches homes for sale or to let from participating UK estate agents with one plain-English query, e.g. '3 bed house in Folkestone under £300k' or 'flats to rent CT20'. Name a town, outcode or postcode. Returns up to 20 results, each with an id to pass to fetch. Made for apps that use standard search and fetch tools (ChatGPT deep research); search_listings takes the same filters separately.

search input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "maxLength": 200,
      "description": "What to look for, including the place"
    }
  }
}
search output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "results"
  ],
  "properties": {
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "title",
          "url"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "title": {
            "type": "string"
          }
        },
        "additionalProperties": {}
      }
    }
  },
  "additionalProperties": {}
}
search annotations
{
  "title": "Search Homedex homes (one plain-English query)",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
fetch — Full details of one Homedex home
Advertised by the server during the last successful anonymous check.
Advertised read-only

The full details of one home by the id that search returned (its Homedex number, e.g. HX-CT20-00012), as text: price, rooms, description, the agent, when Homedex last checked it was still on the agent's website, and the link for viewings and enquiries, which go to the agent. Made for apps that use standard search and fetch tools (ChatGPT deep research); get_listing returns the same as structured data.

fetch input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "The id from search, e.g. HX-CT20-00012"
    }
  }
}
fetch output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "id",
    "title",
    "text",
    "url"
  ],
  "properties": {
    "id": {
      "type": "string"
    },
    "url": {
      "type": "string"
    },
    "text": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "metadata": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    }
  },
  "additionalProperties": {}
}
fetch annotations
{
  "title": "Full details of one Homedex home",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
216 ms
95th percentile latency
216 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 216 ms · metadata changed · 8 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http homedex-mcp https://api.homedex.uk/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add homedex-mcp --url https://api.homedex.uk/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable homedex-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "homedex-mcp": {
      "url": "https://api.homedex.uk/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "homedex-mcp": {
      "type": "streamableHttp",
      "url": "https://api.homedex.uk/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start homedex-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "homedex-mcp": {
      "type": "http",
      "url": "https://api.homedex.uk/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http homedex-mcp https://api.homedex.uk/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://api.homedex.uk/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "homedex-mcp": {
      "serverUrl": "https://api.homedex.uk/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Homedex MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Homedex MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing