Newer
Older
navi-1 / mcp_servers.d / vmk_data.json
{
  "transport": "streamable_http",
  "url": "http://localhost:8080/mcp",
  "groups": {
    "search": [
      "search_similar_listings_tool",
      "search_by_metadata_tool"
    ],
    "details": [
      "get_listing_by_id_tool"
    ],
    "schema": [
      "describe_schema_tool"
    ],
    "create": [
      "create_listing_tool"
    ]
  },
  "instructions": "VMK Data MCP Server provides read-only access to a real-estate database (property_listings). You may ONLY report listings that the tools return; NEVER invent addresses, prices, photos, phones, agencies, or 'similar' listings.\n\nFour tools are available:\n- search_similar_listings_tool — semantic (vector) search by meaning. Use when the user describes atmosphere, qualities, or feelings.\n- search_by_metadata_tool — full-text search (FTS) + metadata filters. Use when the user names exact keywords: district, metro station, street, building type.\n- get_listing_by_id_tool — fetch a single listing by its integer ID.\n- describe_schema_tool — returns full schema description, filter guidelines, and query examples.\n\nCRITICAL RULES:\n1. ALL text queries ('query' parameter) MUST be in UKRAINIAN. Translate the user's request before calling the tool.\n2. When filtering by price, ALWAYS include 'currency' (USD, EUR, or UAH) alongside min_price/max_price.\n3. If a search returns 0 results, you MUST try several fallback attempts in this order before giving up:\n   a) Switch to the other search type (vector <-> FTS) with the same query and filters.\n   b) Remove 1-2 strict filters (usually district, micro_district, or metro_station).\n   c) Simplify the query: remove conversational words ('дай', 'хочу', 'прошу', 'недорого') and subjective adjectives.\n   d) Widen location: keep only city (drop district/micro_district).\n   e) Run a minimal search with only city + deal_type + rooms_count.\n4. Vague or subjective words ('красивий ремонт', 'уютна', 'светлая', 'недорого') do NOT belong in 'query'. Translate them into concrete filters instead: renovation_status, layout, has_balcony, parking_type, metro_distance_type/min, window_view, etc.\n5. Full filter set (use inside the 'filters' object): deal_type (sale|rent_long|rent_short), city, district, micro_district, street, rooms_count (0=studio), bedrooms_count, bathrooms_count, min_price, max_price, currency (USD|EUR|UAH), min_total_area, max_total_area, building_type (brick|panel|monolith|gas_block|wood), floor, floors_total, building_year, renovation_status (cosmetic|euro|designer|none|construction), layout (studio|separate|adjacent), bathroom_type (combined|separate|multiple), parking_type (ground|underground|none|garage), heating_type (central|autonomous|floor|none), window_view (yard|street|park|water|forest), has_balcony, has_loggia, metro_station, metro_distance_type (walk|transport), metro_distance_min, listing_status (active|sold|rented|removed|archived).\n6. city, district, micro_district, street, and metro_station use substring match (case-insensitive).\n7. rooms_count: 0 means studio apartment.\n8. search_by_metadata supports sorting: relevance (default), price_asc, price_desc, date_desc, area_desc.\n9. Pagination: total > limit means more pages exist. Next page: offset += limit.\n10. Images: every listing result includes an 'images' field with direct URLs (http://localhost:8080/images/<local_path>). Search tools return up to 5 images per listing; get_listing_by_id_tool returns all available images. Always render these URLs to the user.\n\nGOOD UKRAINIAN QUERIES:\n- '2-кімнатна квартира Київ ремонт'\n- 'оренда Львів центр'\n- 'Печерський район Арсенальна метро'\nBAD QUERIES:\n- 'красивий ремонт' (too vague; use filters)\n- 'хочу квартиру недорого' (conversational/junk words)\n- 'уютна квартира' (subjective; use semantic search with a factual query instead)"
}