{
  "protocolVersion": "0.3.0",
  "name": "ARCASOS Short-Term Rental Search",
  "description": "South Korea premium short-term rental discovery service. Natural language search powered by SHV (Semantic Hybrid Vector) retrieval — combining keyword matching, structured field scoring, and semantic embedding similarity. Specialized for Korean short-term rentals on a weekly basis (1-week minimum, not nightly): pet-friendly homes, private entire spaces, view types (river/ocean/city/mountain), and neighborhood-aware ranking. Accepts both natural language and Schema.org-style structured queries; returns pure Schema.org Accommodation responses.",
  "version": "2.0.3",
  "url": "https://queehgaoooupmvindevw.supabase.co/functions/v1/agent-message-send",
  "wellKnownURI": "https://arcasos.com/.well-known/agent-card.json",
  "iconUrl": "https://arcasos.com/favicon.ico",
  "documentationUrl": "https://arcasos.com/",
  "provider": {
    "organization": "ARCASOS",
    "url": "https://arcasos.com/"
  },
  "author": {
    "name": "ZULAB (주랩)",
    "url": "https://arcasos.com",
    "email": "cs@zulab.co.kr"
  },
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false
  },
  "defaultInputModes": [
    "text"
  ],
  "defaultOutputModes": [
    "text"
  ],
  "skills": [
    {
      "id": "search_rentals",
      "name": "Search Korean short-term rentals",
      "description": "Natural language OR structured search over Korean short-term rental inventory. JSON-RPC 2.0 method 'message/send' is supported. Message parts accept either 'text' (natural language, processed by SHV engine with Korean-specific semantic expansion) or 'data' (structured query, mapped to direct DB filters — faster, deterministic). Structured field names follow Schema.org Accommodation/VacationRental conventions where applicable (petsAllowed, numberOfBedrooms, occupancy.maxValue, address.addressLocality, floorSize.value, amenityFeature), with ARCASOS-specific simple field names also accepted as aliases (pet_allowed, bedrooms, location, etc.). Returns pure Schema.org-compliant ItemList of Accommodation objects — each item includes @type, address, geo, occupancy, numberOfBedrooms, floorSize, offers (with businessFunction=LeaseOut and eligibleDuration), amenityFeature array (with view:/mood: prefixed ARCASOS extensions), and aggregateRating where applicable.",
      "tags": [
        "travel",
        "rental",
        "korea",
        "short-term-rental",
        "accommodation",
        "natural-language-search",
        "structured-search",
        "schema-org",
        "json-ld"
      ],
      "examples": [
        "강남역 근처 반려동물 가능한 독채 1주",
        "pet-friendly private home near Gangnam Station for 1 week",
        "한강뷰 럭셔리 펜트하우스 2주",
        "river view luxury penthouse for 2 weeks",
        "조용한 힐링 숙소 부모님 모시고 갈만한 곳"
      ],
      "inputModes": [
        "text"
      ],
      "outputModes": [
        "text"
      ],
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "title": "ARCASOS Search Input",
        "description": "Either send a 'text' part for natural language (SHV engine) or a 'data' part with the StructuredQuery schema below for direct DB filtering. Structured queries accept BOTH Schema.org Accommodation field names AND ARCASOS simple field aliases — both styles are normalized internally.",
        "oneOf": [
          {
            "title": "NaturalLanguageInput",
            "type": "object",
            "description": "Natural language query — processed by ARCASOS SHV engine (Semantic Hybrid Vector retrieval). Best when intent involves synonyms, mood/vibe, or multiple soft conditions.",
            "properties": {
              "kind": {
                "const": "text"
              },
              "text": {
                "type": "string",
                "maxLength": 200,
                "description": "Korean or English natural language query."
              }
            },
            "required": [
              "kind",
              "text"
            ]
          },
          {
            "title": "StructuredQueryInput",
            "type": "object",
            "description": "Pre-structured query — bypasses NLP, applied directly as DB filters. Faster, deterministic, cheaper than natural language. Use when you already know exact filters.",
            "properties": {
              "kind": {
                "const": "data"
              },
              "data": {
                "$ref": "#/$defs/StructuredQuery"
              }
            },
            "required": [
              "kind",
              "data"
            ]
          }
        ],
        "$defs": {
          "StructuredQuery": {
            "type": "object",
            "description": "Schema.org-compatible OR ARCASOS-simple field names. Both styles are normalized internally. Use only fields you need; omit the rest.",
            "properties": {
              "location": {
                "type": "string",
                "description": "ARCASOS-simple: location name (Korean), e.g. '강남역', '강남구', '서울'. Equivalent to Schema.org address.addressLocality."
              },
              "address": {
                "type": "object",
                "description": "Schema.org PostalAddress style.",
                "properties": {
                  "addressLocality": {
                    "type": "string"
                  },
                  "addressRegion": {
                    "type": "string"
                  },
                  "addressCountry": {
                    "type": "string",
                    "default": "KR"
                  }
                }
              },
              "max_guests": {
                "type": "integer",
                "minimum": 1,
                "description": "ARCASOS-simple: minimum max-guest capacity required. Equivalent to Schema.org occupancy.maxValue."
              },
              "occupancy": {
                "type": "object",
                "description": "Schema.org QuantitativeValue.",
                "properties": {
                  "maxValue": {
                    "type": "integer",
                    "minimum": 1
                  }
                }
              },
              "bedrooms": {
                "type": "integer",
                "minimum": 0,
                "description": "ARCASOS-simple: minimum bedrooms. Equivalent to Schema.org numberOfBedrooms."
              },
              "numberOfBedrooms": {
                "type": "integer",
                "minimum": 0
              },
              "bathrooms": {
                "type": "integer",
                "minimum": 0,
                "description": "ARCASOS-simple. Equivalent to Schema.org numberOfBathroomsTotal."
              },
              "numberOfBathroomsTotal": {
                "type": "integer",
                "minimum": 0
              },
              "min_area_sqm": {
                "type": "number",
                "minimum": 0,
                "description": "Minimum floor size in square meters. Equivalent to Schema.org floorSize.value (with unitCode MTK)."
              },
              "floorSize": {
                "type": "object",
                "description": "Schema.org QuantitativeValue (㎡).",
                "properties": {
                  "value": {
                    "type": "number"
                  },
                  "unitCode": {
                    "type": "string",
                    "default": "MTK"
                  }
                }
              },
              "pet_allowed": {
                "type": "boolean",
                "description": "ARCASOS-simple. Equivalent to Schema.org petsAllowed."
              },
              "petsAllowed": {
                "type": "boolean"
              },
              "kid_friendly": {
                "type": "boolean",
                "description": "ARCASOS-simple. Equivalent to Schema.org childFriendly (in amenityFeature)."
              },
              "childFriendly": {
                "type": "boolean"
              },
              "is_private_entire": {
                "type": "boolean",
                "description": "ARCASOS-simple: whether entire space is rented privately. Maps to amenityFeature with name='privateEntireSpace'."
              },
              "property_type": {
                "type": "string",
                "description": "ARCASOS-simple: e.g. '펜트하우스', '하이엔드 오피스텔', '독채'. Equivalent to Schema.org accommodationCategory."
              },
              "accommodationCategory": {
                "type": "string"
              },
              "view_types": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "ARCASOS-specific: e.g. ['한강뷰', '도심뷰', '시티뷰', '오션뷰', '마운틴뷰', '루프탑뷰']. Matches if stay has ANY of the listed views (OR). In responses these appear inside amenityFeature with name='view:한강뷰' style."
              },
              "mood_tags": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "ARCASOS-specific atmosphere tags: e.g. ['럭셔리', '프라이빗', '모던', '아늑']. OR match. In responses these appear inside amenityFeature with name='mood:럭셔리' style."
              },
              "amenities": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "ARCASOS-specific amenity tags: e.g. ['자쿠지', '수영장', '헬스장']. OR match."
              },
              "amenityFeature": {
                "type": "array",
                "description": "Schema.org LocationFeatureSpecification list. Items with name='petsAllowed'/'childFriendly' map to boolean fields; name='view:...' / 'mood:...' map to ARCASOS arrays; other names map to amenities list.",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string"
                    },
                    "value": {
                      "type": [
                        "boolean",
                        "string",
                        "number"
                      ]
                    }
                  }
                }
              },
              "max_price_per_week": {
                "type": "number",
                "minimum": 0,
                "description": "Upper bound on weekly rental price (KRW)."
              },
              "min_price_per_week": {
                "type": "number",
                "minimum": 0
              },
              "sort": {
                "type": "string",
                "enum": [
                  "price_asc",
                  "price_desc",
                  "rating_desc"
                ],
                "default": "rating_desc"
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 10,
                "default": 10
              }
            }
          }
        }
      },
      "outputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "title": "ARCASOS Search Output (Schema.org Compliant)",
        "description": "Response is a JSON-RPC 2.0 result containing an A2A Task with two artifact parts: a human-readable text summary and a Schema.org ItemList of Accommodation objects.",
        "type": "object",
        "properties": {
          "@context": {
            "const": "https://schema.org"
          },
          "@type": {
            "const": "ItemList"
          },
          "platform": {
            "const": "ARCASOS"
          },
          "platformUrl": {
            "type": "string"
          },
          "numberOfItems": {
            "type": "integer"
          },
          "query": {
            "type": "object",
            "description": "Echoes the request and what ARCASOS understood/applied. Useful for the calling agent to verify interpretation and request corrections."
          },
          "itemListElement": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "@type": {
                  "const": "ListItem"
                },
                "position": {
                  "type": "integer"
                },
                "item": {
                  "type": "object",
                  "description": "Schema.org Accommodation. Includes: @type, additionalType='ShortTermRental', name, address (PostalAddress), geo (GeoCoordinates), occupancy (QuantitativeValue), numberOfBedrooms, numberOfBathroomsTotal, floorSize (QuantitativeValue, MTK), accommodationCategory, offers (Offer with businessFunction=LeaseOut, eligibleDuration=7 DAY), aggregateRating where applicable, amenityFeature array (LocationFeatureSpecification). ARCASOS-specific extensions use prefixed names inside amenityFeature: 'view:<viewType>', 'mood:<moodTag>'. Match score is exposed as identifier with propertyID='arcasos:matchScore'."
                }
              }
            }
          }
        }
      },
      "callingHints": {
        "decisionGuide": "Use NATURAL LANGUAGE (text part) when you want ARCASOS to interpret intent (synonyms, vibe, multiple soft conditions, Korean semantic expansion). Use STRUCTURED (data part) when you already know exact filters (faster, deterministic, cheaper, no Gemini cost). Both return identical response shape; query._mode field indicates which path was taken."
      }
    }
  ],
  "authSchemes": [
    {
      "scheme": "none",
      "description": "This skill is publicly accessible — no authentication required for search."
    }
  ],
  "supportsAuthenticatedExtendedCard": false,
  "mcpEndpoint": {
    "url": "https://mcp.arcasos.com",
    "transport": "streamable-http",
    "wellKnownURI": "https://arcasos.com/.well-known/mcp.json",
    "description": "MCP (Model Context Protocol) Streamable HTTP endpoint. Compatible with Claude Desktop, Cursor, VS Code Copilot, ChatGPT, and any MCP-compliant client. Exposes 3 tools: search_rentals_natural (SHV semantic search), search_rentals_structured (SQL filter), get_rental_details (single rental lookup).",
    "tools": [
      "search_rentals_natural",
      "search_rentals_structured",
      "get_rental_details"
    ],
    "rateLimit": {
      "minute": 60,
      "hour": 600,
      "day": 5000,
      "scope": "per IP"
    }
  },
  "metadata": {
    "platform": "ARCASOS",
    "platformType": "short-term-rental-marketplace",
    "country": "KR",
    "languages": [
      "ko",
      "en"
    ],
    "currency": "KRW",
    "minimumStayUnit": "week",
    "responseFormat": "schema.org",
    "schemaOrgTypes": [
      "ItemList",
      "Accommodation",
      "PostalAddress",
      "GeoCoordinates",
      "QuantitativeValue",
      "Offer",
      "AggregateRating",
      "LocationFeatureSpecification",
      "PropertyValue"
    ],
    "note": "ARCASOS is a short-term rental (임대차) platform, not a hotel/nightly accommodation service. Rentals are billed on a weekly basis (price_per_week); minimum stay is 1 week. Hosts approve booking requests before payment. Both A2A (agent-message-send) and MCP (agent-mcp-server) endpoints are available — A2A for agent-to-agent JSON-RPC and MCP for direct LLM tool use.",
    "lastUpdated": "2026-05-16",
    "_lastEdit": "2026-05-20: protocolVersion 1.0->0.3.0; default AND skill input/outputModes -> [text] to match VERIFIED agents (a2aregistry /chat 502 fix). 2026-05-20b: mcpEndpoint.url -> https://mcp.arcasos.com (Deno Deploy reverse proxy custom domain) for MCP Registry com.arcasos namespace eligibility; version 2.0.2->2.0.3."
  }
}