UniAffitti Room Finder
Find, rank, and compare student rooms from UniAffitti public listings.
사용해야 할까요
품질 및 안전성
발견 사항 (1)
- LOWcompare_rooms에서
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"room-finder": {
"url": "https://www.uniaffitti.com/mcp/"
}
}
}원격 엔드포인트
https://www.uniaffitti.com/mcp/streamable-http할 수 있는 일
도구 목록
도구 (21)
🟢search_rooms(query, city, country_code, limit, offset, ...)
Search approved and available student rooms by budget, type, university, optional campus, distance, and features.
입력 스키마
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Free text search over title, description, university, location, and campus."
},
"city": {
"type": "string",
"description": "Optional city filter selected from the assisted location search."
},
"country_code": {
"type": "string",
"description": "Optional ISO 3166-1 alpha-2 country filter."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"default": 8
},
"offset": {
"type": "integer",
"minimum": 0,
"default": 0
},
"university_id": {
"type": "integer",
"minimum": 1
},
"campus_id": {
"type": "integer",
"minimum": 1
},
"room_type": {
"type": "string",
"enum": [
"single",
"double",
"bed"
]
},
"min_price": {
"type": "number",
"minimum": 0
},
"max_price": {
"type": "number",
"minimum": 0
},
"available_from": {
"type": "string",
"description": "YYYY-MM-DD."
},
"max_distance_km": {
"type": "number",
"minimum": 0
},
"features": {
"type": "object",
"additionalProperties": true
},
"order_by": {
"type": "string",
"enum": [
"newest",
"price_asc",
"price_desc",
"distance_asc",
"distance_desc"
],
"default": "newest"
}
},
"additionalProperties": false
}🟢rank_room_matches(limit, campus_id, preferred_room_type, max_budget, max_distance_km, ...)
Find rooms and score them against student preferences such as budget, campus distance, room type, and trust signals.
입력 스키마
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"default": 8
},
"campus_id": {
"type": "integer",
"minimum": 1
},
"preferred_room_type": {
"type": "string",
"enum": [
"single",
"double",
"bed"
]
},
"max_budget": {
"type": "number",
"minimum": 0
},
"max_distance_km": {
"type": "number",
"minimum": 0
},
"available_from": {
"type": "string",
"description": "YYYY-MM-DD."
},
"features": {
"type": "object",
"additionalProperties": true
},
"query": {
"type": "string"
}
},
"additionalProperties": false
}🟢get_room_details(room_id)
Return public details for one approved room, including media, features, and limited landlord trust information.
입력 스키마
{
"type": "object",
"properties": {
"room_id": {
"type": "integer",
"minimum": 1
}
},
"required": [
"room_id"
],
"additionalProperties": false
}🟢compare_rooms(room_ids, campus_id)
Compare selected rooms side by side for price, distance, type, availability, features, and trust signals.
입력 스키마
{
"type": "object",
"properties": {
"room_ids": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1
},
"minItems": 2,
"maxItems": 8
},
"campus_id": {
"type": "integer",
"minimum": 1
}
},
"required": [
"room_ids"
],
"additionalProperties": false
}🟢list_search_metadata(university_query, university_country_code, university_limit, university_offset)
List a paginated slice of the global university catalog, optional campuses, and feature filters for room search. The catalog is not limited to 500 records.
입력 스키마
{
"type": "object",
"properties": {
"university_query": {
"type": "string",
"description": "Filter universities by name, city, country, or alias."
},
"university_country_code": {
"type": "string",
"description": "ISO 3166-1 alpha-2 country code."
},
"university_limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50
},
"university_offset": {
"type": "integer",
"minimum": 0,
"default": 0
}
},
"additionalProperties": false
}🟢search_universities(query, country_code, city, limit, offset)
Search the complete active UniAffitti university catalog worldwide with pagination and total count.
입력 스키마
{
"type": "object",
"properties": {
"query": {
"type": "string"
},
"country_code": {
"type": "string"
},
"city": {
"type": "string"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 30
},
"offset": {
"type": "integer",
"minimum": 0,
"default": 0
}
},
"additionalProperties": false
}🟢search_cities(query, country_code, limit, offset)
Search cities in the complete active worldwide university catalog, with country and university counts for assisted room search.
입력 스키마
{
"type": "object",
"properties": {
"query": {
"type": "string"
},
"country_code": {
"type": "string"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 12
},
"offset": {
"type": "integer",
"minimum": 0,
"default": 0
}
},
"additionalProperties": false
}🟢list_university_campuses(university_id)
List active campuses for a selected university so the user can refine the room search.
입력 스키마
{
"type": "object",
"properties": {
"university_id": {
"type": "integer",
"minimum": 1
}
},
"required": [
"university_id"
],
"additionalProperties": false
}🟢get_my_profile
When the user asks to access or connect UniAffitti, call this tool. It starts the secure OAuth account connection when the user is not authenticated, then returns the profile without credentials or secrets.
입력 스키마
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢list_my_messages(conversation_id, limit, messages_limit, unread_only)
Read the authenticated user’s UniAffitti conversations from the same chat used by the web app. Without a conversation_id return fast conversation summaries and last-message previews; with one load the complete recent messages for that conversation.
입력 스키마
{
"type": "object",
"properties": {
"conversation_id": {
"type": "string",
"description": "Optional Firebase conversation/thread id."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 12
},
"messages_limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 30
},
"unread_only": {
"type": "boolean",
"default": false
}
},
"additionalProperties": false
}🟡send_room_message(room_id, message)
Send a first message to the landlord of an approved available room from the authenticated UniAffitti account. The conversation is stored in the same UniAffitti chat used by the web app.
입력 스키마
{
"type": "object",
"properties": {
"room_id": {
"type": "integer",
"minimum": 1
},
"message": {
"type": "string",
"minLength": 1,
"maxLength": 4000
}
},
"required": [
"room_id",
"message"
],
"additionalProperties": false
}🟢get_my_conversation_messages(conversation_id, messages_limit)
Load the recent messages for one authenticated UniAffitti conversation. This is a data-only tool intended to be called by the messages UI after the user selects a conversation.
입력 스키마
{
"type": "object",
"properties": {
"conversation_id": {
"type": "string",
"description": "Firebase conversation/thread id."
},
"messages_limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50
}
},
"required": [
"conversation_id"
],
"additionalProperties": false
}🟢list_my_favorites
List the authenticated user’s saved available rooms.
입력 스키마
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟡add_favorite(room_id)
Save an approved room to the authenticated user’s favorites.
입력 스키마
{
"type": "object",
"properties": {
"room_id": {
"type": "integer",
"minimum": 1
}
},
"required": [
"room_id"
],
"additionalProperties": false
}🔴remove_favorite(room_id)
Remove a room from the authenticated user’s favorites.
입력 스키마
{
"type": "object",
"properties": {
"room_id": {
"type": "integer",
"minimum": 1
}
},
"required": [
"room_id"
],
"additionalProperties": false
}🟢list_my_requests(direction)
List rental requests sent or received by the authenticated user.
입력 스키마
{
"type": "object",
"properties": {
"direction": {
"type": "string",
"enum": [
"sent",
"received",
"all"
],
"default": "all"
}
},
"additionalProperties": false
}🟡create_rental_request(room_id, message, start_date, duration_months)
Send a rental request for an approved available room using the authenticated UniAffitti account.
입력 스키마
{
"type": "object",
"properties": {
"room_id": {
"type": "integer",
"minimum": 1
},
"message": {
"type": "string",
"maxLength": 4000
},
"start_date": {
"type": "string",
"description": "YYYY-MM-DD."
},
"duration_months": {
"type": "integer",
"minimum": 1,
"maximum": 120
}
},
"required": [
"room_id"
],
"additionalProperties": false
}🔴update_rental_request_status(request_id, status, available_from)
Accept, review, reject, or cancel a UniAffitti rental request according to the authenticated user’s role.
입력 스키마
{
"type": "object",
"properties": {
"request_id": {
"type": "integer",
"minimum": 1
},
"status": {
"type": "string",
"enum": [
"in_review",
"accepted",
"rejected",
"cancelled"
]
},
"available_from": {
"type": "string",
"description": "YYYY-MM-DD; required when accepting."
}
},
"required": [
"request_id",
"status"
],
"additionalProperties": false
}🟢list_my_listings
List the authenticated user’s own listings and moderation status.
입력 스키마
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟡create_listing(title, description, address_full, location_label, city, ...)
Create a UniAffitti listing draft for moderation. Listings intentionally keep university_id and campus_id NULL; location is stored independently from the university catalog.
입력 스키마
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 190
},
"description": {
"type": "string",
"minLength": 1
},
"address_full": {
"type": "string",
"minLength": 1,
"maxLength": 500
},
"location_label": {
"type": "string",
"maxLength": 190
},
"city": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"country_code": {
"type": "string",
"description": "ISO 3166-1 alpha-2 country code."
},
"latitude": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"longitude": {
"type": "number",
"minimum": -180,
"maximum": 180
},
"property_type": {
"type": "string",
"enum": [
"apartment",
"house",
"other"
],
"default": "apartment"
},
"property_floor": {
"type": "integer",
"minimum": -2,
"maximum": 20
},
"price_monthly": {
"type": "number",
"minimum": 0
},
"deposit_amount": {
"type": "number",
"minimum": 0
},
"price_currency": {
"type": "string",
"default": "EUR"
},
"room_type": {
"type": "string",
"enum": [
"single",
"double",
"bed"
]
},
"min_stay_months": {
"type": "integer",
"minimum": 0
},
"available_from": {
"type": "string",
"description": "YYYY-MM-DD."
},
"occupancy_status": {
"type": "string",
"enum": [
"available",
"reserved",
"rented",
"unavailable"
],
"default": "available"
},
"features": {
"type": "object",
"additionalProperties": true
}
},
"required": [
"title",
"description",
"address_full",
"city",
"country_code",
"latitude",
"longitude",
"property_floor",
"price_monthly",
"room_type"
],
"additionalProperties": false
}🟢get_account_links
Return deep links for account, listing creation, messages, requests, and favorites in the full UniAffitti web app.
입력 스키마
{
"type": "object",
"properties": {},
"additionalProperties": false
}커뮤니티
증거