Hotyata MCP
Hotyata MCP provides AI agents with access to real-time real estate and secondhand marketplace data for Batumi and Tbilisi. It enables searching for properties and classified items, retrieving detailed listings, fetching statistics, discovering residential complexes, and reporting issues through standardized Model Context Protocol tools.
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://hotyata.com/mcpWhat its tools do
9 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Passed Official MCP Registry namespace is tied to hotyata.com ·
- Passed Endpoint is on the registry namespace domain ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Search for real estate listings with rich filters
- Retrieve detailed information for specific properties
- Search secondhand marketplace items via vector search
- Discover residential complexes and new developments
Source and maintenance
Protocol and capabilities
- Server
- Hotyata 1.0.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 9 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
}
}Tools
9 advertised
search_real_estate
Search verified real estate listings in Batumi and Tbilisi (apartments, houses, commercial). <hints> - Returns compact objects with price_usd, price_sqm_usd, area_sqm, rooms, renovation_status, construction_stage, seller_type, heating_type, gas_status, is_heritage_zone, cadastral_code, year_built, developer_name, sea_view, distance_to_sea_m, has_gas, pets_allowed, no_summer_increase, address, latitude, longitude, photos, source_url, and canonical_url. - Geo search: Use bbox='min_lng,min_lat,max_lng,max_lat' or [min_lng, min_lat, max_lng, max_lat] to search within a map rectangle. - Batumi districts: 'Old Batumi', 'Rustaveli', 'Khimshiashvili' (New Boulevard), 'Bagrationi', 'Javakhishvili', 'Agmashenebeli', 'Airport', 'Tamar', 'Makhinjauri', 'Gonio', 'Kvariati', 'Chakvi', 'Kobuleti'. - Tbilisi districts: 'Vake', 'Saburtalo', 'Vera', 'Mtatsminda', 'Chugureti' (Marjanishvili), 'Didube', 'Avlabari', 'Ortachala', 'Isani', 'Samgori', 'Gldani', 'Didi Dighomi', 'Old Tbilisi'. - Use sort='cheapest' or 'cheapest_sqm' to find the best deals without fetching multiple pages. - Use fields=['id','title','price_usd','price_sqm_usd','area_sqm','district','canonical_url'] to minimize token usage. - Filter by source channel/portal/group using sources=['facebook marketplace'], ['ss.ge', 'myhome.ge'], ['@batumiarendachat'], or Facebook group URLs ['https://www.facebook.com/groups/278563704483455/']. Unmonitored sources return an error. </hints>
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"bbox": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "number"
}
}
],
"description": "Bounding box rectangle: 'min_lng,min_lat,max_lng,max_lat' or [min_lng, min_lat, max_lng, max_lat]"
},
"city": {
"type": "string",
"default": "batumi",
"description": "City name: 'batumi' or 'tbilisi'"
},
"page": {
"type": "number",
"default": 1,
"description": "Page number (starting from 1)"
},
"sort": {
"enum": [
"newest",
"cheapest",
"expensive",
"cheapest_sqm",
"expensive_sqm",
"area_desc",
"area_asc"
],
"type": "string",
"default": "newest",
"description": "Sort order: 'newest', 'cheapest', 'expensive', 'cheapest_sqm', 'expensive_sqm', 'area_desc', 'area_asc'"
},
"limit": {
"type": "number",
"default": 10,
"maximum": 50,
"description": "Number of listings to return (max 50)"
},
"query": {
"type": "string",
"description": "Keywords to search in title, description, street, or amenities (e.g. 'seaview', 'panoramic', 'owner', 'urgent')"
},
"rooms": {
"type": [
"number",
"string"
],
"description": "Number of rooms (e.g. 1 for studio/1-room, 2, 3, or comma-separated '2,3')"
},
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional array of field names to include in each property object to save context tokens"
},
"has_gas": {
"type": "boolean",
"description": "Must have gas connection / gas heating"
},
"sources": {
"type": "array",
"items": {
"type": "string"
},
"description": "Filter by one or more source channels, platforms, portals, or Facebook group URLs. Examples: ['facebook marketplace'], ['ss.ge', 'myhome.ge'], ['https://www.facebook.com/groups/278563704483455/']"
},
"currency": {
"enum": [
"USD",
"GEL"
],
"type": "string",
"default": "USD",
"description": "Currency for price filtering ('USD' or 'GEL')"
},
"district": {
"type": "string",
"description": "District name or comma-separated list of districts (e.g. 'Old Batumi,Rustaveli' or 'Saburtalo,Vake')"
},
"sea_view": {
"enum": [
"none",
"partial",
"full",
"any"
],
"type": "string",
"description": "Sea view filter: 'full' (panoramic), 'partial' (side), 'any' (full or partial), or 'none'"
},
"deal_type": {
"enum": [
"sale",
"rent_long",
"rent_daily",
"pledge"
],
"type": "string",
"description": "Type of deal: 'sale', 'rent_long' (long-term monthly rent), 'rent_daily' (short-term daily rent), or 'pledge' (mortgage/lease)"
},
"max_floor": {
"type": "number",
"description": "Maximum floor number"
},
"max_price": {
"type": "number",
"description": "Maximum total price in selected currency"
},
"min_floor": {
"type": "number",
"description": "Minimum floor number (e.g. 3)"
},
"min_price": {
"type": "number",
"description": "Minimum total price in selected currency"
},
"complex_id": {
"type": "number",
"description": "Filter by residential complex ID"
},
"has_balcony": {
"type": "boolean",
"description": "Must have balcony"
},
"seller_type": {
"enum": [
"owner",
"agent",
"developer",
"all"
],
"type": "string",
"description": "Filter by seller type: 'owner' (direct owner, no commission), 'developer', or 'agent'"
},
"exclude_orbi": {
"type": "boolean",
"description": "Exclude high-density Orbi City aparthotel listings"
},
"has_elevator": {
"type": "boolean",
"description": "Must have an elevator"
},
"heating_type": {
"enum": [
"central",
"gas",
"karma",
"underfloor",
"electric"
],
"type": "string",
"description": "Specific heating system type"
},
"is_furnished": {
"type": "boolean",
"description": "Furnished status"
},
"max_area_sqm": {
"type": "number",
"description": "Maximum area in square meters"
},
"min_area_sqm": {
"type": "number",
"description": "Minimum area in square meters"
},
"pets_allowed": {
"type": "boolean",
"description": "Pet-friendly rentals"
},
"max_price_sqm": {
"type": "number",
"description": "Maximum price per square meter in selected currency"
},
"min_price_sqm": {
"type": "number",
"description": "Minimum price per square meter in selected currency"
},
"property_type": {
"enum": [
"apartment",
"house",
"commercial",
"land",
"residential",
"all"
],
"type": "string",
"description": "Property type filter (defaults to excluding parking)"
},
"max_year_built": {
"type": "number",
"description": "Maximum building construction/completion year"
},
"min_year_built": {
"type": "number",
"description": "Minimum building construction/completion year (e.g. 2018)"
},
"is_heritage_zone": {
"type": "boolean",
"description": "Filter properties located in Cultural Heritage Protection Zone (Old Batumi)"
},
"has_floor_heating": {
"type": "boolean",
"description": "Must have underfloor heating"
},
"renovation_status": {
"type": "string",
"description": "Filter by condition (comma-separated allowed): 'black_frame' (black box), 'white_frame' (white box), 'green_frame', 'renovated' (turnkey), 'needs_renovation'"
},
"construction_stage": {
"type": "string",
"description": "Filter by building stage (comma-separated allowed): 'off_plan' (katlavan / foundation / 2027+), 'under_construction', 'completed' (ready building)"
},
"near_metro_station": {
"type": "string",
"description": "Tbilisi metro station name filter"
},
"no_summer_increase": {
"type": "boolean",
"description": "Rentals with fixed year-round price (no summer hike)"
},
"max_distance_to_sea": {
"type": "number",
"description": "Maximum distance to the sea in meters (e.g. 150 for first line, 500)"
},
"min_distance_to_sea": {
"type": "number",
"description": "Minimum distance to the sea in meters"
},
"max_distance_to_metro": {
"type": "number",
"description": "Maximum distance to metro in meters (Tbilisi)"
}
}
}get_real_estate_stats
Aggregate real estate market statistics (count, average & median price USD, average & median price per sqm USD, min/max price, average area) grouped by district, renovation_status, construction_stage, rooms, seller_type, or complex. <hints> - Ideal for market analytics: comparing prices across city districts, or comparing 'black_frame' vs 'white_frame' vs 'renovated' vs 'off_plan' (katlavan). - Supports all search_real_estate filters (city, deal_type, district, renovation_status, construction_stage, rooms, has_gas, etc.) to slice the market before grouping. </hints>
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"city": {
"type": "string",
"default": "batumi",
"description": "City name: 'batumi' or 'tbilisi'"
},
"rooms": {
"type": [
"number",
"string"
],
"description": "Filter by room count"
},
"has_gas": {
"type": "boolean",
"description": "Filter by gas connection"
},
"district": {
"type": "string",
"description": "Filter by specific district(s)"
},
"group_by": {
"enum": [
"district",
"renovation_status",
"construction_stage",
"rooms",
"seller_type",
"complex",
"none"
],
"type": "string",
"default": "district",
"description": "Dimension to group statistics by"
},
"deal_type": {
"enum": [
"sale",
"rent_long",
"rent_daily",
"pledge"
],
"type": "string",
"default": "sale",
"description": "Deal type to analyze ('sale', 'rent_long', 'rent_daily')"
},
"seller_type": {
"enum": [
"owner",
"agent",
"developer",
"all"
],
"type": "string",
"description": "Filter by seller type"
},
"exclude_orbi": {
"type": "boolean",
"description": "Exclude Orbi City listings from stats"
},
"property_type": {
"enum": [
"apartment",
"house",
"commercial",
"land",
"residential",
"all"
],
"type": "string",
"description": "Property type filter"
},
"renovation_status": {
"type": "string",
"description": "Filter by renovation status ('black_frame', 'white_frame', 'green_frame', 'renovated', 'needs_renovation')"
},
"construction_stage": {
"type": "string",
"description": "Filter by construction stage ('off_plan', 'under_construction', 'completed')"
}
}
}get_property_details
Get complete specifications, full description, seller contact info (phone, contacts, source_url), photo URLs, rooftop coordinates, and complex affiliation for one or up to 15 properties in a single call.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"property_id": {
"type": "number",
"description": "Single unique property ID"
},
"property_ids": {
"type": "array",
"items": {
"type": "number"
},
"maxItems": 15,
"description": "Batch array of up to 15 property IDs to fetch in one round-trip"
}
}
}search_complexes
Search residential developments and new building projects with developer details, delivery status, coordinates, distance to sea, and gas availability.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"city": {
"type": "string",
"default": "batumi",
"description": "City name ('batumi' or 'tbilisi')"
},
"limit": {
"type": "number",
"default": 10,
"maximum": 50,
"description": "Max results (up to 50)"
},
"query": {
"type": "string",
"description": "Complex name or developer name (e.g. 'Alliance', 'Orbi', 'Horizons', 'Calligraphy', 'Next', 'Gumbati')"
},
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional array of field names to return"
},
"has_gas": {
"type": "boolean",
"description": "Filter complexes with gas connection"
},
"district": {
"type": "string",
"description": "Filter by district name"
},
"delivery_year": {
"type": "number",
"description": "Filter by expected delivery year (e.g. 2025, 2026, 2027)"
},
"max_distance_to_sea": {
"type": "number",
"description": "Maximum distance to the sea in meters (e.g. 150 for first line, 500)"
}
}
}get_complex_details
Get detailed profile of one or up to 15 residential complexes including developer name, delivery year, address, rooftop coordinates, and counts & sample active properties currently for sale and rent.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"complex_id": {
"type": "number",
"description": "Single residential complex ID"
},
"complex_ids": {
"type": "array",
"items": {
"type": "number"
},
"maxItems": 15,
"description": "Batch array of up to 15 complex IDs to fetch in one call"
}
}
}search_classified_items
Search deduplicated secondhand marketplace goods (electronics, monitors, routers, keyboards, heaters, furniture, vehicles, household items) aggregated across Telegram channels in Batumi and Tbilisi. <hints> - Powered by multilingual synonym expansion + semantic vector search: English queries (e.g. '4K monitor', 'WiFi router', 'electric heater', 'mechanical keyboard') automatically match Russian, English, and Georgian ads. - Avoid overly restrictive 'category' values unless needed; keyword query alone searches across all categories with hybrid semantic ranking. - Use sort='cheapest' to find lowest-priced items. </hints>
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"city": {
"type": "string",
"default": "batumi",
"description": "City name ('batumi' or 'tbilisi')"
},
"page": {
"type": "number",
"default": 1,
"description": "Page number (starting from 1)"
},
"sort": {
"enum": [
"relevance",
"newest",
"cheapest",
"expensive"
],
"type": "string",
"description": "Sort order: 'relevance' (default when query is present), 'newest', 'cheapest', 'expensive'"
},
"limit": {
"type": "number",
"default": 10,
"maximum": 50,
"description": "Max listings to return (max 50)"
},
"query": {
"type": "string",
"description": "Search keywords, e.g. 'monitor 4K', 'router', 'electric heater', 'mechanical keyboard', 'iPhone 15'"
},
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional array of field names to return"
},
"intent": {
"enum": [
"WTS",
"WTB",
"GIFT",
"RENT",
"SERVICE"
],
"type": "string",
"default": "WTS",
"description": "Listing intent: 'WTS' (For Sale, default), 'WTB' (Looking to buy), 'GIFT' (Free), 'RENT', 'SERVICE'"
},
"category": {
"type": "string",
"description": "Optional category substring filter (e.g. 'electronics', 'furniture', 'appliances', 'computers', 'transport')"
},
"currency": {
"enum": [
"USD",
"GEL"
],
"type": "string",
"default": "USD",
"description": "Currency for price filter ('USD' or 'GEL')"
},
"max_price": {
"type": "number",
"description": "Maximum price in selected currency"
},
"min_price": {
"type": "number",
"description": "Minimum price in selected currency"
}
}
}get_item_details
Get details for one or up to 15 secondhand classified items including full description, photo gallery, seller username, and original Telegram message link.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"item_id": {
"type": "number",
"description": "Single classified item ID"
},
"item_ids": {
"type": "array",
"items": {
"type": "number"
},
"maxItems": 15,
"description": "Batch array of up to 15 classified item IDs to fetch in one call"
}
}
}execute_code_mode
Execute a JavaScript snippet inside an isolated QuickJS WASM sandbox with direct synchronous/async access to the Hotyata SDK (`sdk`). Use this "MCP Code Mode" tool whenever you need to run multi-step queries, compare multiple categories/districts/stages, join complexes with properties, filter or aggregate results, and return only a compact final summary in a single round-trip. Available global `sdk` methods inside your script (can be called with or without `await`): - `sdk.searchProperties(params)` -> `{ total, page, limit, properties: [...] }` - `sdk.getPropertyStats(params)` -> `{ city, deal_type, group_by, total_matching_listings, groups: [...] }` - `sdk.getProperty(idOrArrayOfIds)` -> property details object or `{ properties: [...] }` - `sdk.searchComplexes(params)` -> `{ total, page, limit, complexes: [...] }` - `sdk.getComplex(idOrArrayOfIds)` -> complex details object or `{ complexes: [...] }` - `sdk.searchItems(params)` -> `{ total, page, limit, items: [...] }` - `sdk.getItem(idOrArrayOfIds)` -> item details object or `{ items: [...] }` <examples> // Example 1: Compare renovation status & off-plan (katlavan) sale dynamics in Batumi const byRenovation = sdk.getPropertyStats({ city: "batumi", deal_type: "sale", group_by: "renovation_status" }); const byStage = sdk.getPropertyStats({ city: "batumi", deal_type: "sale", group_by: "construction_stage" }); return { byRenovation: byRenovation.groups, byStage: byStage.groups }; // Example 2: Multi-search classifieds and return top 3 cheapest per item type const queries = ["4K monitor", "router", "electric heater", "mechanical keyboard"]; return queries.map(q => { const res = sdk.searchItems({ query: q, sort: "cheapest", limit: 3 }); return { query: q, total: res.total, cheapest: res.items.map(i => ({ id: i.id, title: i.title, price_gel: i.price_gel, price_usd: i.price_usd, url: i.canonical_url })) }; }); </examples> <hints> - Write a function body ending with a `return ...;` statement. - Maximum 15 SDK calls per execution. Memory limit: 32MB, CPU timeout: 5s. </hints>
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"code"
],
"properties": {
"code": {
"type": "string",
"description": "JavaScript function body to execute in the sandbox. Must return a JSON-serializable value via `return ...`."
}
}
}report_issue
Report an issue with data accuracy, stale or off-market listings, incorrect coordinates, spam, or tool usability limitations. AI agents should call this when finding inaccuracies or when human users report off-market listings.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"entity_type",
"issue_category",
"explanation"
],
"properties": {
"entity_id": {
"type": "string",
"description": "ID or URL of the property, item, or complex (if applicable)"
},
"entity_type": {
"enum": [
"property",
"item",
"complex",
"mcp_tool",
"other"
],
"type": "string",
"description": "What entity has the issue"
},
"explanation": {
"type": "string",
"description": "Clear explanation of what is incorrect and what the correct information should be"
},
"agent_client": {
"type": "string",
"description": "Name of the AI assistant/agent (e.g. 'ChatGPT-4o', 'Claude-3.5', 'Cursor')"
},
"issue_category": {
"enum": [
"already_rented_or_sold",
"wrong_price",
"incorrect_location",
"duplicate_listing",
"spam_or_fraud",
"broken_media",
"schema_feedback",
"other"
],
"type": "string",
"description": "Category of the reported issue"
},
"source_context": {
"type": "string",
"description": "How this issue was discovered (e.g. 'User called landlord and confirmed rented', 'Coordinates point to the sea')"
}
}
}Prompts
Not advertised
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
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
- 891 ms
- 95th percentile latency
- 891 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 891 ms · metadata changed · 9 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http hotyata-mcp https://hotyata.com/mcpCodex
codex mcp add hotyata-mcp --url https://hotyata.com/mcpCursor
{
"mcpServers": {
"hotyata-mcp": {
"url": "https://hotyata.com/mcp"
}
}
}Cline
{
"mcpServers": {
"hotyata-mcp": {
"type": "streamableHttp",
"url": "https://hotyata.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"hotyata-mcp": {
"type": "http",
"url": "https://hotyata.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http hotyata-mcp https://hotyata.com/mcpClaude Desktop
https://hotyata.com/mcpWindsurf
{
"mcpServers": {
"hotyata-mcp": {
"serverUrl": "https://hotyata.com/mcp"
}
}
}Let your agent find its tools
Find servers like Hotyata MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other data and analytics servers
Do you run Hotyata 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.