Every Room MCP
An official MCP server by Evryroom that allows AI agents to search for residential properties for sale and rent across Europe and the UAE. It supports filtering listings, viewing details, comparing homes, managing shortlists, and revealing seller information. It integrates with Claude, ChatGPT, and other MCP clients via Streamable HTTP, supporting both OAuth and API key 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.
https://evryroom.com/mcpWhat you can do with it
- Search for homes for sale or rent in specific markets with filters
- Compare multiple listings side by side based on price or size
- Save properties to shortlists and manage saved searches
- Reveal seller contact information using plan credits or API keys
Source and maintenance
Protocol and capabilities
- Server
- evryroom 1.0.0
- MCP protocol
- 2025-06-18
- Tools
- 13 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
13 advertised
list_markets — 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.
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}find_area — Find an area
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.
{
"type": "object",
"required": [
"country",
"text"
],
"properties": {
"deal": {
"enum": [
"sale",
"rent"
],
"type": "string",
"description": "Count only homes for sale, or only to rent."
},
"text": {
"type": "string",
"description": "A neighbourhood, district or town name, in any spelling."
},
"country": {
"type": "string",
"description": "Two-letter market code from list_markets."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}search_listings — Search homes
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).
{
"type": "object",
"required": [
"country"
],
"properties": {
"deal": {
"enum": [
"sale",
"rent"
],
"type": "string",
"description": "For sale or to rent. Defaults to sale where the market has it."
},
"kind": {
"enum": [
"apartment",
"house",
"land",
"commercial",
"garage",
"other"
],
"type": "string"
},
"near": {
"type": "object",
"required": [
"lat",
"lon",
"km"
],
"properties": {
"km": {
"type": "number",
"description": "Radius, 0.05 to 100 km."
},
"lat": {
"type": "number"
},
"lon": {
"type": "number"
}
},
"description": "Only homes within a radius of a point."
},
"page": {
"type": "integer",
"maximum": 4,
"minimum": 1
},
"sort": {
"enum": [
"newest",
"price_asc",
"price_desc",
"ppm2"
],
"type": "string",
"description": "ppm2 sorts by price per square metre, cheapest first."
},
"text": {
"type": "string",
"description": "Words to find in the title or place, e.g. \"penthouse\" or \"sea view\"."
},
"town": {
"type": "string",
"description": "A town name exactly as listings carry it."
},
"areas": {
"type": "array",
"items": {
"type": "string"
},
"description": "Area slugs from find_area. A home in any of them matches."
},
"min_m2": {
"type": "number",
"description": "Minimum floor area in square metres."
},
"country": {
"type": "string",
"description": "Two-letter market code from list_markets."
},
"setting": {
"type": "array",
"items": {
"enum": [
"beach",
"sea_view",
"waterside",
"mountains"
],
"type": "string"
},
"description": "What is around the home; every one listed must hold. Only where list_markets says setting_filter."
},
"min_beds": {
"type": "integer",
"description": "Minimum bedrooms; in markets where list_markets says rooms, minimum rooms."
},
"min_baths": {
"type": "integer"
},
"max_price_eur": {
"type": "number",
"description": "Sale price, or rent per month, in euros."
},
"min_price_eur": {
"type": "number",
"description": "Sale price, or rent per month, in euros."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_listing — Get a listing
Everything public about one listing: title, description, all photos, price, size, rooms, place and similar homes. Seller contact is not included.
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"description": "A listing id from search_listings."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}compare_listings — Compare listings
Two to six listings side by side: price, euros per square metre, size, rooms, place and age of the ad.
{
"type": "object",
"required": [
"ids"
],
"properties": {
"ids": {
"type": "array",
"items": {
"type": "integer"
},
"maxItems": 6,
"minItems": 2,
"description": "Listing ids from search_listings."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}my_account — 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.
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}save_listing — Save a listing
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.
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"description": "A listing id from search_listings."
},
"list": {
"type": "string",
"description": "A shortlist name. Optional."
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}remove_saved_listing — Remove a saved listing
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.
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer"
},
"list": {
"type": "string",
"description": "Only this shortlist. Optional."
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}my_saved_listings — My saved listings
The listings in the person's shortlists, newest first: every list, or only the one named. Needs sign-in.
{
"type": "object",
"properties": {
"list": {
"type": "string",
"description": "Only this shortlist. Optional."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}save_search — Save a search
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.
{
"type": "object",
"required": [
"name",
"country"
],
"properties": {
"deal": {
"enum": [
"sale",
"rent"
],
"type": "string",
"description": "For sale or to rent. Defaults to sale where the market has it."
},
"kind": {
"enum": [
"apartment",
"house",
"land",
"commercial",
"garage",
"other"
],
"type": "string"
},
"name": {
"type": "string",
"description": "What to call it, e.g. \"2-bed Marina under 6k\"."
},
"near": {
"type": "object",
"required": [
"lat",
"lon",
"km"
],
"properties": {
"km": {
"type": "number",
"description": "Radius, 0.05 to 100 km."
},
"lat": {
"type": "number"
},
"lon": {
"type": "number"
}
},
"description": "Only homes within a radius of a point."
},
"page": {
"type": "integer",
"maximum": 4,
"minimum": 1
},
"sort": {
"enum": [
"newest",
"price_asc",
"price_desc",
"ppm2"
],
"type": "string",
"description": "ppm2 sorts by price per square metre, cheapest first."
},
"text": {
"type": "string",
"description": "Words to find in the title or place, e.g. \"penthouse\" or \"sea view\"."
},
"town": {
"type": "string",
"description": "A town name exactly as listings carry it."
},
"areas": {
"type": "array",
"items": {
"type": "string"
},
"description": "Area slugs from find_area. A home in any of them matches."
},
"min_m2": {
"type": "number",
"description": "Minimum floor area in square metres."
},
"country": {
"type": "string",
"description": "Two-letter market code from list_markets."
},
"setting": {
"type": "array",
"items": {
"enum": [
"beach",
"sea_view",
"waterside",
"mountains"
],
"type": "string"
},
"description": "What is around the home; every one listed must hold. Only where list_markets says setting_filter."
},
"min_beds": {
"type": "integer",
"description": "Minimum bedrooms; in markets where list_markets says rooms, minimum rooms."
},
"min_baths": {
"type": "integer"
},
"max_price_eur": {
"type": "number",
"description": "Sale price, or rent per month, in euros."
},
"min_price_eur": {
"type": "number",
"description": "Sale price, or rent per month, in euros."
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}my_saved_searches — My saved searches
The person's saved searches, newest first, each with the link that reopens it. Needs sign-in.
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}delete_saved_search — Delete a saved search
Delete one of the person's saved searches by its id from my_saved_searches. Needs sign-in.
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}reveal_seller — Reveal the seller
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.
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"description": "A listing id from search_listings."
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
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
- 1100 ms
- 95th percentile latency
- 1100 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1100 ms · metadata changed · 13 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http every-room-mcp https://evryroom.com/mcpCodex
codex mcp add every-room-mcp --url https://evryroom.com/mcpCursor
{
"mcpServers": {
"every-room-mcp": {
"url": "https://evryroom.com/mcp"
}
}
}Cline
{
"mcpServers": {
"every-room-mcp": {
"type": "streamableHttp",
"url": "https://evryroom.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"every-room-mcp": {
"type": "http",
"url": "https://evryroom.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http every-room-mcp https://evryroom.com/mcpClaude Desktop
{
"mcpServers": {
"every-room-mcp": {
"url": "https://evryroom.com/mcp"
}
}
}Windsurf
{
"mcpServers": {
"every-room-mcp": {
"serverUrl": "https://evryroom.com/mcp"
}
}
}Let your agent find its tools
Find servers like Every Room MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other crm, sales, and marketing servers
Do you run Every Room 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.