{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-05T19:27:51.135Z","url":"https://verifymcp.io/servers/happyendpointhq-happyendpoint-mcp/happyendpoint-mcp","markdownUrl":"https://verifymcp.io/servers/happyendpointhq-happyendpoint-mcp/happyendpoint-mcp.md","server":{"slug":"happyendpointhq-happyendpoint-mcp","name":"Happy Endpoint","registryName":"io.github.happyendpointhq/happyendpoint-mcp","description":"Real-time UAE property, retail and travel data: listings, transactions, rental yields, products.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"happyendpoint-mcp","type":"npm","identifier":"happyendpoint-mcp","withdrawn":false,"url":"https://verifymcp.io/servers/happyendpointhq-happyendpoint-mcp/happyendpoint-mcp","version":"0.1.1","transport":"stdio","scoredAt":"2026-11-05T08:28:11.078Z"},"score":{"total":76,"tier":"medium","status":"scored","weekDelta":3,"history":[{"date":"2026-11-05","total":76},{"date":"2026-11-04","total":76},{"date":"2026-11-03","total":76},{"date":"2026-11-02","total":75},{"date":"2026-11-01","total":75},{"date":"2026-10-31","total":74},{"date":"2026-10-30","total":74},{"date":"2026-10-29","total":73},{"date":"2026-10-28","total":73},{"date":"2026-10-27","total":72},{"date":"2026-10-26","total":67},{"date":"2026-10-25","total":66},{"date":"2026-10-24","total":66},{"date":"2026-10-23","total":65},{"date":"2026-10-22","total":65},{"date":"2026-10-21","total":64},{"date":"2026-10-20","total":54}]},"categories":[{"name":"Supply Chain Security","score":98,"verdict":"partial","reasons":["No malware found by supply-chain analysis.","No known CVEs affecting this package version or its production dependencies.","No install/post-install scripts declared.","30 of 92 dependencies flagged as unhealthy."],"codes":[{"code":"supplychain.malware_clean","args":{}},{"code":"cve.none","args":{}},{"code":"installscript.none","args":{}},{"code":"dephealth.assessed","args":{"deps":"92","unhealthy":"30"}}]},{"name":"Provenance & Transparency","score":45,"verdict":"fail","reasons":["Source repository is publicly reachable at the declared URL.","Provenance check failed: no build-provenance attestation is published.","Clear OSI-approved license (MIT).","Actively maintained (last published 15 days ago).","Disclosure check failed: no security disclosure policy was found in the source repository."],"codes":[{"code":"provenance.repo_verified","args":{}},{"code":"provenance.none","args":{}},{"code":"license.osi","args":{"spdx":"MIT"}},{"code":"maintenance.recent","args":{"age_days":"15"}},{"code":"disclosure.absent","args":{}}]},{"name":"Schema Quality & AI Usability","score":73,"verdict":"fail","reasons":["AI-judged instruction clarity (good).","Tool/resource definitions use about 1007 tokens (~100/item across 10 items; 10 tools + 0 resources), lean.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.ai_quality","args":{"band":"good"}},{"code":"schema.footprint_lean","args":{"avg":"100","items":"10","tools":"10","tokens":"1007","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":53,"verdict":"partial","reasons":["Stability observed for 16 of 30 days with no destabilising changes; credit accrues until the full window elapses."],"codes":[{"code":"stability.building_history","args":{"days":"16"}}]},{"name":"Tool Coverage","score":93,"verdict":"partial","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","78% of tool parameters carry a description."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"78"}}]},{"name":"Tool Safety","score":100,"verdict":"pass","reasons":["No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.","We read all 10 captured tool definition(s), and no name or description among them implies an irreversible operation.","An AI judge read all 10 captured unit(s) of tool text and found none that tries to manipulate the model reading it."],"codes":[{"code":"toolsafety.injection_clean","args":{}},{"code":"toolsafety.destructive_none","args":{"tools":"10"}},{"code":"toolsafety.manipulation_clean","args":{"units":"10","judged":"10"}}]},{"name":"Capabilities","score":100,"verdict":"pass","reasons":["Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28."],"codes":[{"code":"protocol.supported","args":{"latest":"2026-07-28","version":"2025-11-25"}}]}],"inconclusive":[],"malware":[],"components":[{"slug":"happyendpoint-mcp","type":"npm","identifier":"happyendpoint-mcp","withdrawn":false,"score":76,"current":true,"url":"https://verifymcp.io/servers/happyendpointhq-happyendpoint-mcp/happyendpoint-mcp","markdownUrl":"https://verifymcp.io/servers/happyendpointhq-happyendpoint-mcp/happyendpoint-mcp.md"}],"facts":[{"label":"Registry","value":"npm"},{"label":"Package","value":"happyendpoint-mcp"},{"label":"Version","value":"0.1.1"},{"label":"Transport","value":"stdio"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"find_locations","title":"Find property locations","description":"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.","inputs":[{"name":"limit","type":"integer","required":false,"description":"Maximum results, default 10"},{"name":"query","type":"string","required":true,"description":"Place name, for example \"dubai marina\" or \"jvc\""}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":105},{"name":"search_properties","title":"Search property listings","description":"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.","inputs":[{"name":"bedrooms","type":"string","required":false,"description":"\"0\" is a studio, \"1\", \"2\", and so on"},{"name":"location","type":"string","required":true,"description":"Area name, for example \"dubai marina\", \"jvc\", \"business bay\""},{"name":"page","type":"integer","required":false,"description":null},{"name":"priceMax","type":"number","required":false,"description":"AED"},{"name":"priceMin","type":"number","required":false,"description":"AED"},{"name":"propertyType","type":"string","required":false,"description":null},{"name":"purpose","type":"string","required":false,"description":"Default for-sale"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":166},{"name":"get_property_details","title":"Get full property details","description":"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.","inputs":[{"name":"propertyId","type":"string","required":true,"description":"Property id from search_properties"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":66},{"name":"search_off_plan","title":"Search off-plan developments","description":"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.","inputs":[{"name":"location","type":"string","required":true,"description":"Area name"},{"name":"maxPreHandoverPayment","type":"number","required":false,"description":"Maximum percent payable before handover, for example 50"},{"name":"page","type":"integer","required":false,"description":null},{"name":"priceMax","type":"number","required":false,"description":"AED"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":101},{"name":"get_transactions","title":"Get historical property transactions","description":"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.","inputs":[{"name":"location","type":"string","required":true,"description":"Area name"},{"name":"page","type":"integer","required":false,"description":null},{"name":"purpose","type":"string","required":false,"description":"Default for-sale"},{"name":"timePeriod","type":"string","required":false,"description":"Lookback window, default 12m"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":110},{"name":"compare_rental_yields","title":"Compare rental yields across areas","description":"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.","inputs":[{"name":"bedrooms","type":"string","required":false,"description":"\"0\" studio, \"1\", \"2\". Default \"1\""},{"name":"locations","type":"array","required":true,"description":"Area names, for example [\"dubai marina\", \"jvc\", \"business bay\"]"},{"name":"propertyType","type":"string","required":false,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":127},{"name":"find_agents","title":"Find real estate agents","description":"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.","inputs":[{"name":"location","type":"string","required":true,"description":"Area name"},{"name":"purpose","type":"string","required":false,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":61},{"name":"search_products","title":"Search retail products","description":"Search live retail product data by category. \"beauty\" covers cosmetics and skincare across the US, Canada, and France. \"home\" covers furniture and home goods across eight countries, and supports cross-country price comparison via countryCode.","inputs":[{"name":"category","type":"string","required":true,"description":null},{"name":"countryCode","type":"string","required":false,"description":"Home category only. us, ca, gb, de, fr, it, se, ch. Default us"},{"name":"query","type":"string","required":true,"description":"Search term, for example \"moisturizer\" or \"desk\""}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":113},{"name":"search_hotels","title":"Search hotels","description":"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.","inputs":[{"name":"adults","type":"integer","required":false,"description":"Default 2"},{"name":"checkIn","type":"string","required":true,"description":"YYYY-MM-DD"},{"name":"checkOut","type":"string","required":true,"description":"YYYY-MM-DD"},{"name":"currency","type":"string","required":false,"description":"Default USD"},{"name":"destination","type":"string","required":true,"description":"City, airport, or hotel name"},{"name":"rooms","type":"integer","required":false,"description":"Default 1"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":113},{"name":"list_available_apis","title":"List available Happy Endpoint APIs","description":"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.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":45}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T08:28:11.000Z","track":"package","endpoint":null,"declaredUrl":null,"truncated":false,"tls":null,"dnssec":null,"auth":null,"httpsRedirect":null,"transports":[],"provenance":{"outcome":"none","label":"No attestation","reason":null,"reasonLabel":null,"discovery":null,"discoveryLabel":null,"sourceRepo":null,"attestationSkipped":null,"attestationSkippedLabel":null},"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":{"nodes":92,"partial":false,"deprecated":null,"stale":30,"noRepo":null}},"mismatches":[],"changelog":{"trackingSince":"2026-10-20","recent":[{"id":"chg_01a1a083-98d9-711c-8467-950770490a65","kind":"score.total_changed","summary":"Trust score (75 → 76)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/happyendpointhq-happyendpoint-mcp/happyendpoint-mcp#chg-chg_01a1a083-98d9-711c-8467-950770490a65"},{"id":"chg_01a19632-c0f5-75dc-b516-3f5d3c879ca6","kind":"score.total_changed","summary":"Trust score (74 → 75)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/happyendpointhq-happyendpoint-mcp/happyendpoint-mcp#chg-chg_01a19632-c0f5-75dc-b516-3f5d3c879ca6"},{"id":"chg_01a18be5-fddb-7709-8c03-49b93ed21791","kind":"score.total_changed","summary":"Trust score (73 → 74)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/happyendpointhq-happyendpoint-mcp/happyendpoint-mcp#chg-chg_01a18be5-fddb-7709-8c03-49b93ed21791"},{"id":"chg_01a18197-3e5c-7823-8640-5751c0a47365","kind":"check.reverified","summary":"Security disclosure (unverified → fail)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-28","url":"https://verifymcp.io/servers/happyendpointhq-happyendpoint-mcp/happyendpoint-mcp#chg-chg_01a18197-3e5c-7823-8640-5751c0a47365"},{"id":"chg_01a18197-3e5d-78b1-808e-5bf7664f6aff","kind":"score.total_changed","summary":"Trust score (72 → 73)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-28","url":"https://verifymcp.io/servers/happyendpointhq-happyendpoint-mcp/happyendpoint-mcp#chg-chg_01a18197-3e5d-78b1-808e-5bf7664f6aff"},{"id":"chg_01a17c71-031e-7739-874d-afbee96c1e94","kind":"check.verdict","summary":"Source repository (fail → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/happyendpointhq-happyendpoint-mcp/happyendpoint-mcp#chg-chg_01a17c71-031e-7739-874d-afbee96c1e94"},{"id":"chg_01a17c71-031f-7bfd-8ff3-5be2039c889f","kind":"score.total_changed","summary":"Trust score (67 → 72)","materiality":"functional","direction":"improvement","scoreDelta":5,"occurredOn":"2026-10-27","url":"https://verifymcp.io/servers/happyendpointhq-happyendpoint-mcp/happyendpoint-mcp#chg-chg_01a17c71-031f-7bfd-8ff3-5be2039c889f"},{"id":"chg_01a1774a-cec5-7073-ba48-58837545f7a5","kind":"score.total_changed","summary":"Trust score (66 → 67)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/happyendpointhq-happyendpoint-mcp/happyendpoint-mcp#chg-chg_01a1774a-cec5-7073-ba48-58837545f7a5"},{"id":"chg_01a16cfc-0c67-7813-a92f-84cb45c393a6","kind":"score.total_changed","summary":"Trust score (65 → 66)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-24","url":"https://verifymcp.io/servers/happyendpointhq-happyendpoint-mcp/happyendpoint-mcp#chg-chg_01a16cfc-0c67-7813-a92f-84cb45c393a6"},{"id":"chg_01a162b0-792a-7579-8d6b-5acc37aafa6d","kind":"check.unverifiable","summary":"Security disclosure (fail → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-22","url":"https://verifymcp.io/servers/happyendpointhq-happyendpoint-mcp/happyendpoint-mcp#chg-chg_01a162b0-792a-7579-8d6b-5acc37aafa6d"},{"id":"chg_01a162b0-792c-7d29-98c9-83ca7c00d87f","kind":"check.reverified","summary":"Stability (unverified → 0.07)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-22","url":"https://verifymcp.io/servers/happyendpointhq-happyendpoint-mcp/happyendpoint-mcp#chg-chg_01a162b0-792c-7d29-98c9-83ca7c00d87f"},{"id":"chg_01a162b0-792d-729c-b646-52af85d30041","kind":"score.total_changed","summary":"Trust score (64 → 65)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-22","url":"https://verifymcp.io/servers/happyendpointhq-happyendpoint-mcp/happyendpoint-mcp#chg-chg_01a162b0-792d-729c-b646-52af85d30041"},{"id":"chg_01a15d8a-d8c4-7021-a755-e11500ba9913","kind":"check.verdict","summary":"Source repository (pass → fail)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-21","url":"https://verifymcp.io/servers/happyendpointhq-happyendpoint-mcp/happyendpoint-mcp#chg-chg_01a15d8a-d8c4-7021-a755-e11500ba9913"},{"id":"chg_01a15d8a-d8c6-7322-af28-5a5d4e94c138","kind":"check.reverified","summary":"Malware scan (unverified → pass)","materiality":"security","direction":"improvement","scoreDelta":null,"occurredOn":"2026-10-21","url":"https://verifymcp.io/servers/happyendpointhq-happyendpoint-mcp/happyendpoint-mcp#chg-chg_01a15d8a-d8c6-7322-af28-5a5d4e94c138"},{"id":"chg_01a15d8a-d8c6-7bed-94ff-2f985d0aeea4","kind":"score.total_changed","summary":"Trust score (54 → 64)","materiality":"functional","direction":"improvement","scoreDelta":10,"occurredOn":"2026-10-21","url":"https://verifymcp.io/servers/happyendpointhq-happyendpoint-mcp/happyendpoint-mcp#chg-chg_01a15d8a-d8c6-7bed-94ff-2f985d0aeea4"},{"id":"chg_01a15b09-367a-71b0-bb93-394ccfef630a","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-20","url":"https://verifymcp.io/servers/happyendpointhq-happyendpoint-mcp/happyendpoint-mcp#chg-chg_01a15b09-367a-71b0-bb93-394ccfef630a"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/happyendpointhq-happyendpoint-mcp/happyendpoint-mcp/changelog.json"},"links":{"html":"https://verifymcp.io/servers/happyendpointhq-happyendpoint-mcp/happyendpoint-mcp","markdown":"https://verifymcp.io/servers/happyendpointhq-happyendpoint-mcp/happyendpoint-mcp.md","changelogJson":"https://verifymcp.io/servers/happyendpointhq-happyendpoint-mcp/happyendpoint-mcp/changelog.json","changelogRss":"https://verifymcp.io/servers/happyendpointhq-happyendpoint-mcp/happyendpoint-mcp.xml","external":[{"label":"npm package","href":"https://www.npmjs.com/package/happyendpoint-mcp"},{"label":"Socket report","href":"https://socket.dev/npm/package/happyendpoint-mcp"},{"label":"Repository","href":"https://github.com/happyendpointhq/happyendpoint-mcp"},{"label":"Website","href":"https://happyendpoint.com/"}]}}