Heart Homes — Dubai property data

Dubai property prices, rents and trends from official Dubai Land Department records. Read-only.

Quality & Safety

A
Description quality
98%
Schema completeness
87%
Naming quality
95%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,007Tokens (tool definitions)
~1.1 KBTypical response size
Moderate attention impact (1.57% of 128k context)

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.

Rate this Server

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "heart-homes": {
      "url": "https://heart.homes/mcp"
    }
  }
}

Remote endpoints

https://heart.homes/mcpstreamable-http

Tool inventory

Tools (11)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢search_locations(query, kind)

Resolve a free-text Dubai location name (community, area, or building) to canonical slugs. Always call this first when the user names a place; other tools take the returned slugs.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 2,
      "maxLength": 80,
      "description": "Location name to search for"
    },
    "kind": {
      "description": "Restrict results to one kind",
      "type": "string",
      "enum": [
        "community",
        "area",
        "building"
      ]
    }
  },
  "required": [
    "query"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_market_overview

City-wide Dubai sales KPIs over the last 12 months (transaction count, total value, median price, median price per sqm) plus data freshness. Good first call for broad questions.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_location_stats(slug, propertyClass)

Headline stats for one community or area slug: 12-month sales volume, median price, price per sqm, 12-month trend, plus a property-class mix for sales and rents. When propertyClass is set for a community, also returns per-bedroom sales and rent breakdowns; rent bedroom coverage is partial and must be reported as approximate using rentBedroomCoveragePct and rentBedroomNote. Per-bedroom rent for a single building is not available.

Input Schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120,
      "description": "Location slug (community or area) as returned by search_locations"
    },
    "propertyClass": {
      "description": "When set, also return the per-bedroom sales breakdown and, where attributable, a per-bedroom rent breakdown with partial-coverage figure (communities only)",
      "type": "string",
      "enum": [
        "apartment",
        "villa",
        "building",
        "land"
      ]
    }
  },
  "required": [
    "slug"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_ready_vs_offplan(slug, propertyClass)

Sales split between the secondary (ready / resale) market and the off-plan (pre-completion developer) market for one community or area over the last 12 months - transaction count, total value, and median price for each. "ready" = completed homes resold on the secondary market; "off-plan" = pre-completion developer sales. Property flipping, reselling, and "resale market" questions are READY / secondary-market questions: report the ready row here and do not present off-plan figures as flipping or resale figures. Optionally filter to one property class.

Input Schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120,
      "description": "Location slug (community or area) as returned by search_locations"
    },
    "propertyClass": {
      "type": "string",
      "enum": [
        "apartment",
        "villa",
        "building",
        "land"
      ],
      "description": "Property class filter"
    }
  },
  "required": [
    "slug"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_price_history(slug, kind, propertyClass, months)

Monthly transaction counts and median prices for a community/area slug (or city-wide when slug is omitted), for sales or rents, optionally filtered to one property class. Rent medians are annual contract values in AED/year.

Input Schema

{
  "type": "object",
  "properties": {
    "slug": {
      "description": "Omit for city-wide history",
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "kind": {
      "type": "string",
      "enum": [
        "sale",
        "rent"
      ],
      "description": "'sale' = DLD sales transactions, 'rent' = Ejari rent contracts"
    },
    "propertyClass": {
      "type": "string",
      "enum": [
        "apartment",
        "villa",
        "building",
        "land"
      ],
      "description": "Property class filter"
    },
    "months": {
      "default": 24,
      "type": "integer",
      "minimum": 3,
      "maximum": 60
    }
  },
  "required": [
    "kind"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_building_stats(communitySlug, buildingSlug)

Stats for one building: 12-month sales, median price, trend, recent sales, property-type mix, and - where rent contracts can be attributed to the building - median annual rent and recent rent contracts, and a per-bedroom rent breakdown where enough contracts resolve a bedroom. Takes the communitySlug + buildingSlug pair returned by search_locations.

Input Schema

{
  "type": "object",
  "properties": {
    "communitySlug": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "buildingSlug": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    }
  },
  "required": [
    "communitySlug",
    "buildingSlug"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢rank_buildings(communitySlug, metric, order, limit)

Buildings in one community ranked by 12-month median sale price or median annual rent - answers 'cheapest/most expensive buildings in X'. Rent coverage is partial: Ejari records carry no building name, so only buildings whose project name identifies them uniquely have rent stats. Buildings with fewer than 5 records are excluded.

Input Schema

{
  "type": "object",
  "properties": {
    "communitySlug": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120,
      "description": "Community slug from search_locations"
    },
    "metric": {
      "type": "string",
      "enum": [
        "sale_price",
        "annual_rent"
      ]
    },
    "order": {
      "type": "string",
      "enum": [
        "cheapest",
        "most_expensive"
      ]
    },
    "limit": {
      "default": 10,
      "type": "integer",
      "minimum": 3,
      "maximum": 15
    }
  },
  "required": [
    "communitySlug",
    "metric",
    "order"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢list_recent_transactions(slug, kind, limit)

Most recent registered DLD sales or rent contracts for a community or area slug - real records to ground price talk in.

Input Schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120,
      "description": "Location slug (community or area) as returned by search_locations"
    },
    "kind": {
      "type": "string",
      "enum": [
        "sale",
        "rent"
      ],
      "description": "'sale' = DLD sales transactions, 'rent' = Ejari rent contracts"
    },
    "limit": {
      "default": 10,
      "type": "integer",
      "minimum": 1,
      "maximum": 15
    }
  },
  "required": [
    "slug",
    "kind"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢compare_buy_vs_rent(slug, propertyClass)

Compare buying vs renting in one community or area: 12-month weighted median sale price, median annual rent, and the implied gross rental yield. Optionally filter to one property class.

Input Schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120,
      "description": "Location slug (community or area) as returned by search_locations"
    },
    "propertyClass": {
      "type": "string",
      "enum": [
        "apartment",
        "villa",
        "building",
        "land"
      ],
      "description": "Property class filter"
    }
  },
  "required": [
    "slug"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢rank_communities(metric, order, propertyClass, limit)

Communities ranked by 12-month median sale price or median annual rent - the direct answer to 'cheapest areas', 'most expensive communities', 'most affordable rents'. Only communities with 30+ transactions are ranked; without a propertyClass filter, only residential classes (apartments + villas) count, so whole-building leases and land deals don't skew the medians.

Input Schema

{
  "type": "object",
  "properties": {
    "metric": {
      "type": "string",
      "enum": [
        "sale_price",
        "annual_rent"
      ],
      "description": "Rank by sale prices or by annual rents"
    },
    "order": {
      "type": "string",
      "enum": [
        "cheapest",
        "most_expensive"
      ]
    },
    "propertyClass": {
      "type": "string",
      "enum": [
        "apartment",
        "villa",
        "building",
        "land"
      ],
      "description": "Property class filter"
    },
    "limit": {
      "default": 10,
      "type": "integer",
      "minimum": 3,
      "maximum": 15
    }
  },
  "required": [
    "metric",
    "order"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_trends_movers(direction, limit)

Communities with the biggest 12-month price moves (direction 'up' = risers, 'down' = fallers). Only communities with 30+ sales are included, so thin-volume noise is excluded.

Input Schema

{
  "type": "object",
  "properties": {
    "direction": {
      "type": "string",
      "enum": [
        "up",
        "down"
      ]
    },
    "limit": {
      "default": 5,
      "type": "integer",
      "minimum": 1,
      "maximum": 10
    }
  },
  "required": [
    "direction"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Recent observations

verifiedversion not recorded11 tools