Every Room
Search homes for sale and to rent across Europe and the UAE, keep shortlists, reveal sellers.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"property-search": {
"url": "https://evryroom.com/mcp"
}
}
}Remote endpoints
https://evryroom.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (13)
🟢list_markets
The countries Every Room covers, with how many homes are for sale and to rent in each, the currency, and which filters work there. Call this first to get the two-letter market codes the other tools take.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢find_area(country, text, deal)
Turn a place name into the area slugs search_listings filters on, with how many homes each area has. Example: country "ae", text "marina" finds dubai-marina.
Input Schema
{
"type": "object",
"properties": {
"country": {
"type": "string",
"description": "Two-letter market code from list_markets."
},
"text": {
"type": "string",
"description": "A neighbourhood, district or town name, in any spelling."
},
"deal": {
"type": "string",
"enum": [
"sale",
"rent"
],
"description": "Count only homes for sale, or only to rent."
}
},
"required": [
"country",
"text"
],
"additionalProperties": false
}🟢search_listings(country, deal, kind, min_price_eur, max_price_eur, ...)
Search homes for sale or to rent in one market. Returns 24 listings a page, newest first unless sorted, with price, size, rooms, place and a photo. Up to 4 pages per search: narrow with filters rather than paging. Prices filter in euros: the sale price, or the rent per month (also in markets that quote rent per year).
Input Schema
{
"type": "object",
"properties": {
"country": {
"type": "string",
"description": "Two-letter market code from list_markets."
},
"deal": {
"type": "string",
"enum": [
"sale",
"rent"
],
"description": "For sale or to rent. Defaults to sale where the market has it."
},
"kind": {
"type": "string",
"enum": [
"apartment",
"house",
"land",
"commercial",
"garage",
"other"
]
},
"min_price_eur": {
"type": "number",
"description": "Sale price, or rent per month, in euros."
},
"max_price_eur": {
"type": "number",
"description": "Sale price, or rent per month, in euros."
},
"min_m2": {
"type": "number",
"description": "Minimum floor area in square metres."
},
"min_beds": {
"type": "integer",
"description": "Minimum bedrooms; in markets where list_markets says rooms, minimum rooms."
},
"min_baths": {
"type": "integer"
},
"areas": {
"type": "array",
"items": {
"type": "string"
},
"description": "Area slugs from find_area. A home in any of them matches."
},
"town": {
"type": "string",
"description": "A town name exactly as listings carry it."
},
"text": {
"type": "string",
"description": "Words to find in the title or place, e.g. \"penthouse\" or \"sea view\"."
},
"near": {
"type": "object",
"properties": {
"lat": {
"type": "number"
},
"lon": {
"type": "number"
},
"km": {
"type": "number",
"description": "Radius, 0.05 to 100 km."
}
},
"required": [
"lat",
"lon",
"km"
],
"description": "Only homes within a radius of a point."
},
"setting": {
"type": "array",
"items": {
"type": "string",
"enum": [
"beach",
"sea_view",
"waterside",
"mountains"
]
},
"description": "What is around the home; every one listed must hold. Only where list_markets says setting_filter."
},
"sort": {
"type": "string",
"enum": [
"newest",
"price_asc",
"price_desc",
"ppm2"
],
"description": "ppm2 sorts by price per square metre, cheapest first."
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 4
}
},
"required": [
"country"
],
"additionalProperties": false
}🟢get_listing(id)
Everything public about one listing: title, description, all photos, price, size, rooms, place and similar homes. Seller contact is not included.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "A listing id from search_listings."
}
},
"required": [
"id"
],
"additionalProperties": false
}🟢compare_listings(ids)
Two to six listings side by side: price, euros per square metre, size, rooms, place and age of the ad.
Input Schema
{
"type": "object",
"properties": {
"ids": {
"type": "array",
"items": {
"type": "integer"
},
"minItems": 2,
"maxItems": 6,
"description": "Listing ids from search_listings."
}
},
"required": [
"ids"
],
"additionalProperties": false
}🟢my_account
The signed-in person's Every Room account: their plan and how many seller reveals are left this week, their shortlists and their saved searches. Needs sign-in.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟡save_listing(id, list)
Save a listing to one of the person's shortlists, the same lists the heart on evryroom.com saves to. Without `list`, it goes to their first list (made for them if they have none); a `list` name that does not exist yet becomes a new list. Needs sign-in.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "A listing id from search_listings."
},
"list": {
"type": "string",
"description": "A shortlist name. Optional."
}
},
"required": [
"id"
],
"additionalProperties": false
}🔴remove_saved_listing(id, list)
Take a listing out of the person's shortlists: out of the named `list`, or out of every list of theirs that holds it. Needs sign-in.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"list": {
"type": "string",
"description": "Only this shortlist. Optional."
}
},
"required": [
"id"
],
"additionalProperties": false
}🟢my_saved_listings(list)
The listings in the person's shortlists, newest first: every list, or only the one named. Needs sign-in.
Input Schema
{
"type": "object",
"properties": {
"list": {
"type": "string",
"description": "Only this shortlist. Optional."
}
},
"additionalProperties": false
}🟡save_search(name, country, deal, kind, min_price_eur, ...)
Save a search under a name, with the same filters as search_listings. It appears in the person's saved searches on evryroom.com. Needs sign-in.
Input Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "What to call it, e.g. \"2-bed Marina under 6k\"."
},
"country": {
"type": "string",
"description": "Two-letter market code from list_markets."
},
"deal": {
"type": "string",
"enum": [
"sale",
"rent"
],
"description": "For sale or to rent. Defaults to sale where the market has it."
},
"kind": {
"type": "string",
"enum": [
"apartment",
"house",
"land",
"commercial",
"garage",
"other"
]
},
"min_price_eur": {
"type": "number",
"description": "Sale price, or rent per month, in euros."
},
"max_price_eur": {
"type": "number",
"description": "Sale price, or rent per month, in euros."
},
"min_m2": {
"type": "number",
"description": "Minimum floor area in square metres."
},
"min_beds": {
"type": "integer",
"description": "Minimum bedrooms; in markets where list_markets says rooms, minimum rooms."
},
"min_baths": {
"type": "integer"
},
"areas": {
"type": "array",
"items": {
"type": "string"
},
"description": "Area slugs from find_area. A home in any of them matches."
},
"town": {
"type": "string",
"description": "A town name exactly as listings carry it."
},
"text": {
"type": "string",
"description": "Words to find in the title or place, e.g. \"penthouse\" or \"sea view\"."
},
"near": {
"type": "object",
"properties": {
"lat": {
"type": "number"
},
"lon": {
"type": "number"
},
"km": {
"type": "number",
"description": "Radius, 0.05 to 100 km."
}
},
"required": [
"lat",
"lon",
"km"
],
"description": "Only homes within a radius of a point."
},
"setting": {
"type": "array",
"items": {
"type": "string",
"enum": [
"beach",
"sea_view",
"waterside",
"mountains"
]
},
"description": "What is around the home; every one listed must hold. Only where list_markets says setting_filter."
},
"sort": {
"type": "string",
"enum": [
"newest",
"price_asc",
"price_desc",
"ppm2"
],
"description": "ppm2 sorts by price per square metre, cheapest first."
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 4
}
},
"required": [
"name",
"country"
],
"additionalProperties": false
}🟢my_saved_searches
The person's saved searches, newest first, each with the link that reopens it. Needs sign-in.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}🔴delete_saved_search(id)
Delete one of the person's saved searches by its id from my_saved_searches. Needs sign-in.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer"
}
},
"required": [
"id"
],
"additionalProperties": false
}⚪reveal_seller(id)
Reveal who is selling or letting a listing: the portal or agency it is advertised on, the agent, the ad reference and the link to the original ad, plus the ad's own text. Spends one reveal from the person's Every Room plan (Search US$9.99 a week (5 sellers), Pro US$21.99 a week (20 sellers)), or their one free reveal; a listing already revealed costs nothing. Ask the person before spending one. Without reveals left it returns revealed: false with an upgrade_url for the person to open. Needs sign-in.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "A listing id from search_listings."
}
},
"required": [
"id"
],
"additionalProperties": false
}Community
Evidence