Skip to main content
Glama
happyendpointhq

Happy Endpoint MCP Server

Official

Happy Endpoint MCP Server

An MCP server that gives Claude, Cursor, and other MCP clients direct access to real-time real estate, retail, and travel data. Ask questions in plain language and the assistant queries the APIs itself.

Beta. This is a 0.x release. Tools and their arguments may change before 1.0.

"What's the rental yield on a 1-bed in JVC versus Dubai Marina?"
"What did apartments in Business Bay actually sell for this year?"
"Find off-plan projects in Dubai Hills under 2 million with less than 50% before handover."

Built and maintained by Happy Endpoint.


Install

Add to your MCP client config and restart it. No install step, npx fetches the package on first run.

{
  "mcpServers": {
    "happyendpoint": {
      "command": "npx",
      "args": ["-y", "happyendpoint-mcp"],
      "env": {
        "RAPIDAPI_KEY": "your_rapidapi_key"
      }
    }
  }
}

Client

Config path

Claude Desktop (macOS)

~/Library/Application Support/Claude/claude_desktop_config.json

Claude Desktop (Windows)

%APPDATA%\Claude\claude_desktop_config.json

Cursor

~/.cursor/mcp.json

Claude Code

.mcp.json in your project root

Windsurf

~/.codeium/windsurf/mcp_config.json

Get a key at rapidapi.com/user/happyendpoint. One key works across every API, and each has a free tier, but you subscribe to each one separately.


Related MCP server: Frostbyte MCP

Tools

Tool

What it does

search_properties

Property listings for sale or rent by area, price, bedrooms, type

get_property_details

Full record for one property, with amenities and agency

get_transactions

Recorded sale transactions with price per sqm and sale type

compare_rental_yields

Gross yield across several areas at once, computed

search_off_plan

Off-plan and under-construction developments

find_agents

Agents by area, with agency and performance badges

find_locations

Search areas, communities, and buildings by name

search_products

Retail product search across beauty and home categories

search_hotels

Hotel search by destination and dates

list_available_apis

What this server can reach, and where to subscribe


Why this rather than a generic API proxy

Some marketplaces expose a generic MCP endpoint that forwards raw REST calls. For simple cases that is fine. This server exists because four things go wrong when an assistant is handed raw endpoints.

1. Location IDs fail silently

Property search endpoints take a numeric location ID. Pass a wrong one and the API returns a different area rather than an error. The answer looks completely plausible and is about the wrong place.

This is not hypothetical. A published ID table for these endpoints had seven of nine areas wrong, with two major communities transposed.

Here, tools take place names. IDs are resolved internally, and every response echoes which area was actually matched:

"resolvedLocation": { "name": "Jumeirah Village Circle (JVC)", "id": "5416" }

2. The endpoints disagree with each other

Four different response shapes for closely related data:

Endpoint

Shape

Property search

{properties, total}, camelCase, title is {en: "..."}

Property details

flat object, title is a plain string

Agent search

a bare array, snake_case field names

Transactions

search-index shaped {hits, nbHits}, numbers as strings

Given three shapes for "title", a model will read the wrong field and state the result confidently. Everything is normalised to one shape here.

3. Some questions are not a single endpoint

"Which area has the better rental yield" needs a sale search and a rent search per area, medians over both, and a division. compare_rental_yields does it in one call across up to eight areas. There is no endpoint for it.

4. Ten tools beats seventeen

Models choose badly among seventeen near-identical endpoint names. This exposes ten task-shaped tools with descriptions that say when to use them, including the distinction that trips up most analysis: listings are asking prices, transactions are what property actually sold for.


Example output

compare_rental_yields across four areas, 1-bed apartments:

Area

Gross yield

Median asking sale

Median annual rent

Jumeirah Village Circle (JVC)

7.87%

890,000

69,999

Business Bay

6.06%

1,650,000

100,000

Dubai Marina

6.00%

1,500,000

90,000

Palm Jumeirah

3.78%

3,700,000

140,000

get_transactions returns a computed summary alongside the rows:

{
  "totalTransactions": 3421,
  "summary": {
    "medianPricePerSqm": 15871,
    "minPricePerSqm": 7944,
    "maxPricePerSqm": 27013,
    "saleTypeBreakdown": { "Primary First Sale": 13, "Secondary Resale": 7 }
  }
}

Data domains

Domain

Coverage

Real estate

UAE listings, transactions, agents, off-plan developments

Retail, beauty

Cosmetics and skincare across the US, Canada, France

Retail, home

Furniture and home goods across eight countries

Travel

Hotels, flights, car rental

Full catalogue at happyendpoint.com/library.


Things worth knowing

Rental prices are annual. These markets quote yearly rent, not monthly. The server labels it so the assistant does not divide by twelve without noticing.

Asking prices are not transaction prices. search_properties returns what sellers want. get_transactions returns what buyers paid. For valuation, use transactions.

get_property_details is slow, routinely over 30 seconds. The server allows for it, but prefer search_properties when its fields suffice.

Gross yield is not net yield. Service charges, management, maintenance, and vacancy typically remove 2 to 3 percentage points. The tool says so in its output.


Local development

git clone https://github.com/happyendpointhq/happyendpoint-mcp
cd happyendpoint-mcp
npm install
npm run build

RAPIDAPI_KEY=your_key node test-client.mjs

test-client.mjs connects over stdio, lists the tools, and calls several against the live API.

Point your client at the local build:

{
  "mcpServers": {
    "happyendpoint-dev": {
      "command": "node",
      "args": ["/absolute/path/to/happyendpoint-mcp/dist/index.js"],
      "env": { "RAPIDAPI_KEY": "your_key" }
    }
  }
}

FAQ

Do I need a paid plan?

No. Every API has a free tier, enough to try all the tools. Heavier use needs a paid plan on the specific APIs you use.

Why did a tool return a 403?

You are not subscribed to that particular API, or its quota is exhausted. The error names the API and links its subscription page. list_available_apis shows all of them.

Does it cover countries outside the UAE?

Property tools are UAE-focused today. The wider catalogue covers the UK, Spain, Turkey, Singapore, Japan, and the US, and those will be added as tools. See happyendpoint.com/library.

Is my API key sent anywhere except the data provider?

No. It stays in your MCP client config, is read from the environment, and is sent only as an authentication header to the upstream API gateway.

Can I use this without an MCP client?

Yes, through the language SDKs: happyendpoint on PyPI and happyendpoint-js.


Status

Beta, 0.x. Tool names and arguments may change before 1.0. Pin a version if you need stability.


Disclaimer

Happy Endpoint is an independent provider. This package is not affiliated with, endorsed by, sponsored by, or connected to any of the websites, platforms, retailers, or marketplaces whose data may be accessible through the underlying APIs.

All product names, brands, trademarks, and registered trademarks are the property of their respective owners. Any reference to them is descriptive only, to identify the subject matter of the data, and does not imply any association or endorsement.

Users are responsible for ensuring their use of any data complies with applicable laws and the terms of service of the relevant source.



About Happy Endpoint

Happy Endpoint builds and maintains real-time data APIs across real estate, ecommerce, retail, and travel.

Licence

MIT. See LICENSE.

Available Tools

10 tools
compare_rental_yieldsCompare rental yields across areasA

Calculate and compare gross rental yield for several UAE areas at once. Yield is annual rent divided by purchase price, the headline metric for buy-to-let investors. This is computed from live listings, not available as a single API call. Uses median asking prices, so treat it as a screening tool rather than a valuation.

ParametersJSON Schema
NameRequiredDescriptionDefault
bedroomsNo"0" studio, "1", "2". Default "1"
locationsYesArea names, for example ["dubai marina", "jvc", "business bay"]
propertyTypeNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. It reveals that yield is computed from 'live listings' using 'median asking prices' and that it is 'not available as a single API call,' offering useful caveats. However, it does not discuss potential accuracy limitations or the nature of the output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact with four sentences, each serving a purpose: defining what it does, explaining the metric, and giving usage caveats. The second sentence about the formula is useful context and not wasted. It is front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a computation tool with no output schema and no annotations, the description covers the essential points: what metric is computed, the formula, the data source, and a caveat. It does not explicitly state the return format (e.g., a list with yields), but given the tool's purpose, this is reasonably implied and not a critical gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents the 'locations' parameter with examples and 'bedrooms' with valid values. The description adds minimal meaning by mentioning 'several UAE areas at once,' but it does not elaborate on 'bedrooms' or 'propertyType' beyond the schema. With 67% schema coverage, the description provides no significant additional semantic value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Calculate and compare gross rental yield for several UAE areas at once.' It uses a specific verb ('calculate and compare') and resource ('rental yield'), and it distinguishes itself from sibling tools that provide raw listing or transaction data by focusing on a computed metric.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context for use: it is 'the headline metric for buy-to-let investors' and explicitly advises to 'treat it as a screening tool rather than a valuation.' While it does not name alternative tools, it implies when this tool is appropriate versus raw data sources.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_agentsFind real estate agentsA

Find real estate agents active in a UAE area, with their agency and performance badges such as TruBroker. Useful for agent directories and for finding who is most active in a given community.

ParametersJSON Schema
NameRequiredDescriptionDefault
purposeNo
locationYesArea name

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses the tool returns 'active' agents and includes agency and TruBroker badges, but lacks details on result limits, pagination, or authentication requirements. This is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the primary function and followed by use cases. There is no redundant or vague wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with two parameters, the description covers the core purpose and result contents. It lacks information on result format or pagination, but given the low complexity, it is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%, but the description adds context to the location parameter (UAE area) and the purpose parameter is self-explanatory via its enum values. However, it does not clarify whether purpose is required or how it affects results, leaving some gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: finding real estate agents in a UAE area, including their agency and performance badges like TruBroker. This distinguishes it from sibling tools like search_properties, which focus on properties rather than agents.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear use cases: agent directories and identifying the most active agents in a community. While it doesn't explicitly name alternatives or when-not-to-use, the context is sufficient for an agent to infer appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_locationsFind property locationsA

Search UAE property locations by name. Returns matching areas, communities, and individual buildings with how many listings each has. Use this when a place name is ambiguous, or to discover what areas exist. Other property tools accept place names directly and resolve them for you, so you usually do not need to call this first.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results, default 10
queryYesPlace name, for example "dubai marina" or "jvc"

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full transparency burden. It explains the output contents (areas, communities, buildings with listing counts) and the search nature, but does not mention any potential errors, rate limits, or exact response structure. Still, it discloses the key behavioral trait of being a read-only lookup, which is sufficient for a simple search tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, each with a clear purpose: action, output, and usage guidance. It is front-loaded with the verb and resource, and there is no redundant or irrelevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with 2 parameters and no output schema, the description covers the core functionality, output, and usage. It does not include examples or error handling, but given the low complexity, it is near-complete. The guidance about other tools adds important context for when to invoke this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for both parameters, so the description does not need to explain their syntax. It slightly reinforces that 'query' is a place name ('by name') but otherwise adds no new meaning beyond the schema's descriptions. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches for UAE property locations by name and returns matching areas, communities, and individual buildings with listing counts. It uses a specific verb (search) and distinct resource (locations), and distinguishes itself from sibling tools by noting that other property tools resolve place names automatically.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly provides when to use the tool ('when a place name is ambiguous, or to discover what areas exist') and when not to ('Other property tools accept place names directly and resolve them for you, so you usually do not need to call this first'). This clearly differentiates it from alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_property_detailsGet full property detailsA

Full record for one property: specification, amenities, agency, and location hierarchy. Needs an id from search_properties. This endpoint is slow, often over 30 seconds, so prefer search_properties when its fields are enough.

ParametersJSON Schema
NameRequiredDescriptionDefault
propertyIdYesProperty id from search_properties

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden of behavioral disclosure. It openly warns that the endpoint is slow (often over 30 seconds) and notes the dependency on a prior search. While it doesn't mention error behavior or authorization, it covers the most significant behavioral trait.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, each earning its place: what it returns, prerequisite, and performance guidance. No redundancy or fluff, and key information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with no output schema, the description gives a solid picture of the return content and performance characteristics. It slightly lacks details on potential failure modes or field restrictions, but overall it is sufficiently complete for an agent to select and invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides a description for propertyId, and the schema coverage is 100%. The main description re-states that the id comes from search_properties, adding marginal nuance but not new information beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool returns the full record for one property, listing content areas (specification, amenities, agency, location hierarchy). This clearly distinguishes it from the sibling search_properties tool, which is a list/search operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states the prerequisite (needs an id from search_properties) and provides guidance to prefer search_properties when its fields are sufficient due to slowness. This gives clear when-to-use and alternative context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_transactionsGet historical property transactionsA

Actual recorded sale and rental transactions for a UAE area, with price per sqm and whether each was a first sale from the developer or a resale. This is what property really sold for, unlike search_properties which returns asking prices. Use this for valuation, market trends, and price-per-sqm questions.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
purposeNoDefault for-sale
locationYesArea name
timePeriodNoLookback window, default 12m

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It goes beyond a simple 'get transactions' by explaining the nature of the data (actual recorded transactions, not asking prices) and the included details (price per sqm, first sale vs resale). It does not mention response format or pagination, but for a read-only tool this is reasonably transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose and key data details, then followed by use cases and a distinguishing contrast. Every sentence contributes value with no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 4 params and no output schema, the description adequately covers what the tool returns (transactions with price per sqm and sale type) and its intended use. It does not explain the 'page' parameter or anything about pagination, but the core functionality is sufficiently clear for an agent to select and invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 75%, covering location, purpose, and timePeriod, so per the rubric baseline is 3. The description adds little parameter-specific meaning; it mentions sale/rental and UAE area, but this mostly mirrors the schema. No additional guidance is provided for the 'page' param, which lacks a schema description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it returns actual recorded sale and rental transactions with price per sqm and first-sale/resale status, using a specific verb (get) and resource (historical property transactions). It explicitly distinguishes itself from sibling search_properties by contrasting actual sales with asking prices.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit use cases: 'Use this for valuation, market trends, and price-per-sqm questions.' It also names a sibling alternative (search_properties) and explains the key difference. However, it does not explicitly state when not to use this tool or mention other alternatives, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_available_apisList available Happy Endpoint APIsA

List the data sources this server can reach, and where to subscribe to each. Useful when a call fails because of a missing subscription, or to see what data is available.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states that the tool lists data sources and subscription locations, implying a non-destructive, informational read operation. However, it does not disclose potential behavioral details such as whether the tool actively checks reachability, requires authentication, or has any side effects. The phrase 'can reach' is somewhat ambiguous and could imply network calls or simply configuration data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, with the first sentence front-loading the primary action and resource, and the second sentence providing usage guidance. Every word adds value; there is no redundancy, fluff, or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with zero parameters and no output schema, the description adequately explains what it does and when to use it. It states the tool lists data sources and subscription locations, giving a clear idea of the return content. It could be more explicit about the exact format or structure of the output, but for such a low-complexity tool, the coverage is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the schema coverage is 100% (vacuously). The description adds no parameter-specific information, which is acceptable because there are no parameters to explain. The baseline for 0-parameter tools is 4, and no deduction is warranted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a specific action ('List') and clearly identifies the resource ('data sources this server can reach') plus the additional detail of where to subscribe. This clearly distinguishes it from sibling tools that retrieve specific data (e.g., search_properties, get_property_details), as this tool is about discovering available endpoints rather than querying them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence provides explicit use cases: when a call fails due to a missing subscription or to see what data is available. This gives clear context for when to use the tool. It does not name alternative tools explicitly, but the context is sufficient to infer that this is for metainformation rather than actual data retrieval.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_hotelsSearch hotelsA

Search hotels by destination and dates, with prices and availability. Give dates as YYYY-MM-DD; they are converted to the format the API expects. The destination is resolved to an internal id automatically.

ParametersJSON Schema
NameRequiredDescriptionDefault
roomsNoDefault 1
adultsNoDefault 2
checkInYesYYYY-MM-DD
checkOutYesYYYY-MM-DD
currencyNoDefault USD
destinationYesCity, airport, or hotel name

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does well by revealing that dates are automatically converted to the API's expected format and that the destination is resolved to an internal id. This adds context beyond the schema, though it doesn't describe output structure or error cases.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, each informative and front-loaded. It states the core purpose, then provides two key behavioral details without redundancy. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the schema covers all six parameters and the description addresses the main usage constraints (date format, destination resolution), this is complete enough for a search tool. No output schema exists, but the description's mention of 'prices and availability' gives a reasonable expectation of return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description enriches this by explaining the date format handling and automatic destination resolution, which adds meaning not present in the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Search hotels by destination and dates, with prices and availability,' which is a specific verb+resource+scope. It clearly distinguishes this tool from siblings like search_properties or search_products by focusing on hotels.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context: search by destination and dates, plus guidance on date format ('YYYY-MM-DD') and destination resolution. It doesn't explicitly mention when to use this tool instead of alternatives, but the hotel-specific wording implies its scope.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_off_planSearch off-plan developmentsA

Search off-plan and under-construction property projects in the UAE. Off-plan means not yet built, usually bought on a payment plan. Useful for questions about new developments, launches, and pre-handover payment terms.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
locationYesArea name
priceMaxNoAED
maxPreHandoverPaymentNoMaximum percent payable before handover, for example 50

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so description carries the burden. It explains the domain and payment plan context, but does not disclose pagination behavior, return formats, or any limitations beyond the implied read-only nature of a search.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the main purpose, no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with 4 params and no output schema, it covers the domain, use cases, and key terminology. Lacks detail on pagination but acceptable given sibling tools and schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75% and description adds context for maxPreHandoverPayment via 'pre-handover payment terms' and explains the domain. It doesn't fully explain page, but the schema provides descriptions for most parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it searches off-plan and under-construction property projects in the UAE, distinguishing it from general search_properties. The definition of 'off-plan' adds clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Mentions specific use cases ('new developments, launches, and pre-handover payment terms'), giving clear context for when to use, but does not explicitly name alternative tools or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_productsSearch retail productsA

Search live product data from a retailer. "sephora" covers beauty products across the US, Canada, and France. "ikea" covers furniture and home goods across eight countries, and supports cross-country price comparison via countryCode.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch term, for example "moisturizer" or "desk"
retailerYes
countryCodeNoIKEA only. us, ca, gb, de, fr, it, se, ch. Default us

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses live-data nature and cross-country comparison behavior, which is relevant. However, it does not describe return format, pagination, rate limits, or other side effects. For a simple search tool, this is adequate but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the core purpose. Each sentence adds specific, non-redundant information about scope and capabilities. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the main search scopes and the optional countryCode behavior, which is critical for correct invocation. However, without an output schema, it does not clarify what fields are returned or pagination, leaving some ambiguity for the agent. Overall adequate for a straightforward search tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaningful context to the retailer enum (explaining what each retailer covers) and countryCode (supporting cross-country price comparison), which goes beyond the schema's sparse enum and default. The query parameter already has an example in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ('Search live product data from a retailer'), then clarifies the two retailer domains (beauty, furniture/home goods). This clearly distinguishes it from sibling tools focused on real estate and locations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool (searching Sephora or IKEA products), including geographic coverage and countryCode usage for price comparisons. It does not explicitly name alternatives, but the retailer-specific coverage implies usage boundaries and differentiates from unrelated siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_propertiesSearch property listingsA

Search UAE property listings for sale or rent by area, price, bedrooms, and type. Takes a place name, not an ID. Prices are AED; for rentals the price is the ANNUAL rent. Returns asking prices from current listings, which run higher than actual sale prices, so use get_transactions for what property really sold for.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
purposeNoDefault for-sale
bedroomsNo"0" is a studio, "1", "2", and so on
locationYesArea name, for example "dubai marina", "jvc", "business bay"
priceMaxNoAED
priceMinNoAED
propertyTypeNo

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description adds key behavioral context: prices are in AED, rental prices are annual, and asking prices are higher than actual sale prices. It doesn't cover pagination or defaults, but it discloses critical return-value behavior and unit semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences with clear front-loading: first sentence states the main function, second clarifies input and units, third offers a caveat and alternative. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema and multiple parameters, but the description covers essential semantics (place name, AED, annual rent, asking vs sold). It could mention pagination or return fields, but the current level is sufficient for an agent to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaning beyond the schema by clarifying that location is a place name and that prices are AED (with annual rent for rentals). Since schema coverage is 71%, this extra context for price and location is valuable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it searches UAE property listings with specific filters (area, price, bedrooms, type) and distinguishes itself by noting it takes a place name rather than an ID, while also referencing get_transactions for sold prices.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells when to use get_transactions instead (when actual sale prices are needed) and implies when to use this tool (for current listings). It also provides the input constraint 'not an ID', giving clear usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4.3/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: location discovery, property listing search, off-plan search, transaction data, yield comparison, agent lookup, product search, hotel search, and API list. No two tools overlap in function; even similar property tools (search vs. off-plan vs. transactions) are separated by listing type and data source.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern (find_locations, search_properties, get_transactions, compare_rental_yields, list_available_apis). The verbs vary semantically (find, search, get, compare, list) but are used appropriately, and there is no mixing of camelCase or irregular styles.

Tool Count5/5

With 10 tools, the server sits comfortably in the ideal 3-15 range. Each tool serves a distinct endpoint or computation, and the property-focused subset (7 tools) is thorough without being bloated. The additional product, hotel, and meta tools expand the server's reach without making the count unwieldy.

Completeness4/5

The UAE property domain is well-covered: location search, property listing search, detailed property records, off-plan projects, actual transactions, rental yield comparison, and agent lookup. Missing are update/delete operations, but this is a read-only data server. The product and hotel sections are minimal (only search), but they serve simple use cases. Overall, minor gaps exist in non-property areas, but core workflows are covered.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    A unified MCP server providing AI agents with 40+ developer APIs including geolocation, crypto prices, DNS lookup, and web scraping. Enables natural language access to various tools through a single gateway.
    1
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Remote MCP server for Saudi real estate data, giving AI assistants access to 65,000+ rental and sale property listings across 5 Saudi cities with market analytics and price trends.
    1
  • A
    license
    A
    quality
    B
    maintenance
    One MCP server providing access to 160+ live web data APIs (search, social media, e-commerce, real estate, jobs, travel, news, finance, and more) using dynamic discovery via 4 generic tools to avoid the agent's tool limit.
    5
    2
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/happyendpointhq/happyendpoint-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server