UniAffitti Room Finder

Find, rank, and compare student rooms from UniAffitti public listings.

Should I use this

Quality & Safety

A
Description quality
99%
Schema completeness
70%
Naming quality
98%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~7,308Tokens (tool definitions)
~3.6 KBTypical response size
Significant attention impact (5.71% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "room-finder": {
      "url": "https://www.uniaffitti.com/mcp/"
    }
  }
}

Remote endpoints

https://www.uniaffitti.com/mcp/streamable-http

What it can do

Tool inventory

Tools (21)

🟒 Read-only🟑 WriteπŸ”΄ Deleteβšͺ Unknown
🟒search_rooms(query, city, country_code, limit, offset, ...)

Search approved, available student rooms by budget, type, university, optional campus, distance, and features. Results include public listing content submitted by UniAffitti users.

Input Schema

{
  "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
}

Output Schema

{
  "type": "object",
  "properties": {
    "rooms": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "price_monthly": {
            "type": [
              "number",
              "null"
            ]
          },
          "deposit_amount": {
            "type": [
              "number",
              "null"
            ]
          },
          "price_currency": {
            "type": "string"
          },
          "room_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "min_stay_months": {
            "type": [
              "integer",
              "null"
            ]
          },
          "available_from": {
            "type": [
              "string",
              "null"
            ]
          },
          "occupancy_status": {
            "type": "string"
          },
          "room_city": {
            "type": [
              "string",
              "null"
            ]
          },
          "room_country_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "university_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "university_city": {
            "type": [
              "string",
              "null"
            ]
          },
          "university_country_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "zone_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "location_label": {
            "type": [
              "string",
              "null"
            ]
          },
          "campus_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "landlord_name": {
            "type": "string"
          },
          "landlord_avatar_url": {
            "type": "string"
          },
          "landlord_role": {
            "type": "string"
          },
          "landlord_is_verified": {
            "type": "boolean"
          },
          "landlord_rating_average": {
            "type": [
              "number",
              "null"
            ]
          },
          "landlord_rating_count": {
            "type": "integer"
          },
          "distance_km": {
            "type": [
              "number",
              "null"
            ]
          },
          "cover_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "location_name": {
            "type": "string"
          },
          "public_url": {
            "type": "string"
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "title",
          "price_monthly",
          "price_currency",
          "room_type",
          "location_name",
          "public_url"
        ]
      }
    },
    "limit": {
      "type": "integer"
    },
    "offset": {
      "type": "integer"
    },
    "has_more": {
      "type": "boolean"
    }
  },
  "required": [
    "rooms",
    "limit",
    "offset",
    "has_more"
  ],
  "additionalProperties": false
}
🟒rank_room_matches(limit, campus_id, preferred_room_type, max_budget, max_distance_km, ...)

Find public, approved room listings and score them against preferences such as budget, campus distance, room type, and trust signals. Listing content is submitted by UniAffitti users.

Input Schema

{
  "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
}

Output Schema

{
  "type": "object",
  "properties": {
    "rooms": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "price_monthly": {
            "type": [
              "number",
              "null"
            ]
          },
          "deposit_amount": {
            "type": [
              "number",
              "null"
            ]
          },
          "price_currency": {
            "type": "string"
          },
          "room_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "min_stay_months": {
            "type": [
              "integer",
              "null"
            ]
          },
          "available_from": {
            "type": [
              "string",
              "null"
            ]
          },
          "occupancy_status": {
            "type": "string"
          },
          "room_city": {
            "type": [
              "string",
              "null"
            ]
          },
          "room_country_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "university_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "university_city": {
            "type": [
              "string",
              "null"
            ]
          },
          "university_country_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "zone_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "location_label": {
            "type": [
              "string",
              "null"
            ]
          },
          "campus_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "landlord_name": {
            "type": "string"
          },
          "landlord_avatar_url": {
            "type": "string"
          },
          "landlord_role": {
            "type": "string"
          },
          "landlord_is_verified": {
            "type": "boolean"
          },
          "landlord_rating_average": {
            "type": [
              "number",
              "null"
            ]
          },
          "landlord_rating_count": {
            "type": "integer"
          },
          "distance_km": {
            "type": [
              "number",
              "null"
            ]
          },
          "cover_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "location_name": {
            "type": "string"
          },
          "public_url": {
            "type": "string"
          },
          "match_score": {
            "type": "integer"
          },
          "match_reasons": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "title",
          "price_monthly",
          "price_currency",
          "room_type",
          "location_name",
          "public_url",
          "match_score",
          "match_reasons"
        ]
      }
    }
  },
  "required": [
    "rooms"
  ],
  "additionalProperties": false
}
🟒get_room_details(room_id)

Return public details for one approved room, including user-submitted description, media, features, and limited landlord trust information.

Input Schema

{
  "type": "object",
  "properties": {
    "room_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "required": [
    "room_id"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "room": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer"
        },
        "title": {
          "type": "string"
        },
        "description": {
          "type": [
            "string",
            "null"
          ]
        },
        "price_monthly": {
          "type": [
            "number",
            "null"
          ]
        },
        "deposit_amount": {
          "type": [
            "number",
            "null"
          ]
        },
        "price_currency": {
          "type": "string"
        },
        "room_type": {
          "type": [
            "string",
            "null"
          ]
        },
        "min_stay_months": {
          "type": [
            "integer",
            "null"
          ]
        },
        "available_from": {
          "type": [
            "string",
            "null"
          ]
        },
        "occupancy_status": {
          "type": "string"
        },
        "room_city": {
          "type": [
            "string",
            "null"
          ]
        },
        "room_country_code": {
          "type": [
            "string",
            "null"
          ]
        },
        "university_name": {
          "type": [
            "string",
            "null"
          ]
        },
        "university_city": {
          "type": [
            "string",
            "null"
          ]
        },
        "university_country_code": {
          "type": [
            "string",
            "null"
          ]
        },
        "zone_name": {
          "type": [
            "string",
            "null"
          ]
        },
        "location_label": {
          "type": [
            "string",
            "null"
          ]
        },
        "campus_name": {
          "type": [
            "string",
            "null"
          ]
        },
        "landlord_name": {
          "type": "string"
        },
        "landlord_avatar_url": {
          "type": "string"
        },
        "landlord_role": {
          "type": "string"
        },
        "landlord_is_verified": {
          "type": "boolean"
        },
        "landlord_rating_average": {
          "type": [
            "number",
            "null"
          ]
        },
        "landlord_rating_count": {
          "type": "integer"
        },
        "distance_km": {
          "type": [
            "number",
            "null"
          ]
        },
        "cover_url": {
          "type": [
            "string",
            "null"
          ]
        },
        "location_name": {
          "type": "string"
        },
        "public_url": {
          "type": "string"
        }
      },
      "additionalProperties": false,
      "required": [
        "id",
        "title",
        "price_monthly",
        "price_currency",
        "room_type",
        "location_name",
        "public_url"
      ]
    },
    "landlord": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "avatar_url": {
          "type": "string"
        },
        "role": {
          "type": "string"
        },
        "is_verified": {
          "type": "boolean"
        },
        "rating_average": {
          "type": [
            "number",
            "null"
          ]
        },
        "rating_count": {
          "type": "integer"
        }
      },
      "additionalProperties": false,
      "required": [
        "name",
        "avatar_url",
        "role",
        "is_verified",
        "rating_average",
        "rating_count"
      ]
    },
    "media": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "media_type": {
            "type": "string"
          },
          "url": {
            "type": "string"
          }
        },
        "additionalProperties": false,
        "required": [
          "media_type",
          "url"
        ]
      }
    },
    "features": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "unit": {
            "type": [
              "string",
              "null"
            ]
          },
          "value": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ]
          },
          "value_label": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "code",
          "label",
          "type",
          "unit",
          "value",
          "value_label"
        ]
      }
    },
    "contact_available": {
      "type": "boolean"
    }
  },
  "required": [
    "room",
    "landlord",
    "media",
    "features",
    "contact_available"
  ],
  "additionalProperties": false
}
🟒compare_rooms(room_ids, campus_id)

Compare selected public room listings side by side for price, distance, type, availability, features, and trust signals.

Input Schema

{
  "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
}

Output Schema

{
  "type": "object",
  "properties": {
    "rooms": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "price_monthly": {
            "type": [
              "number",
              "null"
            ]
          },
          "deposit_amount": {
            "type": [
              "number",
              "null"
            ]
          },
          "price_currency": {
            "type": "string"
          },
          "room_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "min_stay_months": {
            "type": [
              "integer",
              "null"
            ]
          },
          "available_from": {
            "type": [
              "string",
              "null"
            ]
          },
          "occupancy_status": {
            "type": "string"
          },
          "room_city": {
            "type": [
              "string",
              "null"
            ]
          },
          "room_country_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "university_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "university_city": {
            "type": [
              "string",
              "null"
            ]
          },
          "university_country_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "zone_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "location_label": {
            "type": [
              "string",
              "null"
            ]
          },
          "campus_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "landlord_name": {
            "type": "string"
          },
          "landlord_avatar_url": {
            "type": "string"
          },
          "landlord_role": {
            "type": "string"
          },
          "landlord_is_verified": {
            "type": "boolean"
          },
          "landlord_rating_average": {
            "type": [
              "number",
              "null"
            ]
          },
          "landlord_rating_count": {
            "type": "integer"
          },
          "distance_km": {
            "type": [
              "number",
              "null"
            ]
          },
          "cover_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "location_name": {
            "type": "string"
          },
          "public_url": {
            "type": "string"
          },
          "feature_summary": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "code": {
                  "type": "string"
                },
                "label": {
                  "type": "string"
                },
                "type": {
                  "type": "string"
                },
                "unit": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "value": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "number"
                    },
                    {
                      "type": "boolean"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "value_label": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "additionalProperties": false,
              "required": [
                "code",
                "label",
                "type",
                "unit",
                "value",
                "value_label"
              ]
            }
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "title",
          "price_monthly",
          "price_currency",
          "room_type",
          "location_name",
          "public_url",
          "feature_summary"
        ]
      }
    },
    "comparison": {
      "type": "object",
      "properties": {
        "lowest_price_room_id": {
          "type": [
            "integer",
            "null"
          ]
        },
        "closest_room_id": {
          "type": [
            "integer",
            "null"
          ]
        },
        "most_reviewed_landlord_room_id": {
          "type": [
            "integer",
            "null"
          ]
        }
      },
      "additionalProperties": false,
      "required": [
        "lowest_price_room_id",
        "closest_room_id",
        "most_reviewed_landlord_room_id"
      ]
    }
  },
  "required": [
    "rooms",
    "comparison"
  ],
  "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.

Input Schema

{
  "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
}

Output Schema

{
  "type": "object",
  "properties": {
    "universities": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "region": {
            "type": [
              "string",
              "null"
            ]
          },
          "country_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "country_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "default_latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "default_longitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "website_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "email_domain": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "city",
          "country_code",
          "country_name"
        ]
      }
    },
    "universities_pagination": {
      "type": "object",
      "properties": {
        "total": {
          "type": "integer"
        },
        "limit": {
          "type": "integer"
        },
        "offset": {
          "type": "integer"
        },
        "has_more": {
          "type": "boolean"
        }
      },
      "additionalProperties": false,
      "required": [
        "total",
        "limit",
        "offset",
        "has_more"
      ]
    },
    "campuses": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "university_id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "address": {
            "type": [
              "string",
              "null"
            ]
          },
          "campus_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "is_verified": {
            "type": "boolean"
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "university_id",
          "name",
          "latitude",
          "longitude",
          "is_verified"
        ]
      }
    },
    "features": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "code": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "feature_type": {
            "type": "string"
          },
          "unit": {
            "type": [
              "string",
              "null"
            ]
          },
          "options": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "value_code": {
                  "type": "string"
                },
                "value_label": {
                  "type": "string"
                }
              },
              "additionalProperties": false,
              "required": [
                "value_code",
                "value_label"
              ]
            }
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "code",
          "label",
          "feature_type"
        ]
      }
    },
    "room_types": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "value": {
            "type": "string"
          },
          "label": {
            "type": "string"
          }
        },
        "additionalProperties": false,
        "required": [
          "value",
          "label"
        ]
      }
    }
  },
  "required": [
    "universities",
    "universities_pagination",
    "campuses",
    "features",
    "room_types"
  ],
  "additionalProperties": false
}
🟒search_universities(query, country_code, city, limit, offset)

Search the complete active UniAffitti university catalog worldwide with pagination and total count.

Input Schema

{
  "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
}

Output Schema

{
  "type": "object",
  "properties": {
    "universities": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "region": {
            "type": [
              "string",
              "null"
            ]
          },
          "country_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "country_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "default_latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "default_longitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "website_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "email_domain": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "name",
          "city",
          "country_code",
          "country_name"
        ]
      }
    },
    "total": {
      "type": "integer"
    },
    "limit": {
      "type": "integer"
    },
    "offset": {
      "type": "integer"
    },
    "has_more": {
      "type": "boolean"
    }
  },
  "required": [
    "universities",
    "total",
    "limit",
    "offset",
    "has_more"
  ],
  "additionalProperties": false
}
🟒search_cities(query, country_code, limit, offset)

Search cities represented in the active university catalog and public room listings, with country and university counts for assisted room search.

Input Schema

{
  "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
}

Output Schema

{
  "type": "object",
  "properties": {
    "cities": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "city": {
            "type": "string"
          },
          "region": {
            "type": [
              "string",
              "null"
            ]
          },
          "country_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "country_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "universities_count": {
            "type": "integer"
          }
        },
        "additionalProperties": false,
        "required": [
          "city",
          "region",
          "country_code",
          "country_name",
          "universities_count"
        ]
      }
    },
    "total": {
      "type": "integer"
    },
    "limit": {
      "type": "integer"
    },
    "offset": {
      "type": "integer"
    },
    "has_more": {
      "type": "boolean"
    }
  },
  "required": [
    "cities",
    "total",
    "limit",
    "offset",
    "has_more"
  ],
  "additionalProperties": false
}
🟒list_university_campuses(university_id)

List active campuses for a selected university so the user can refine the room search.

Input Schema

{
  "type": "object",
  "properties": {
    "university_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "required": [
    "university_id"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "university_id": {
      "type": "integer"
    },
    "campuses": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "university_id": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "address": {
            "type": [
              "string",
              "null"
            ]
          },
          "campus_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "is_verified": {
            "type": "boolean"
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "university_id",
          "name",
          "latitude",
          "longitude",
          "is_verified"
        ]
      }
    }
  },
  "required": [
    "university_id",
    "campuses"
  ],
  "additionalProperties": false
}
🟒get_my_profile

When the user asks to access or connect UniAffitti, call this tool. It starts secure OAuth account connection when needed, then returns only first and last name, email, role, and email-verification status; it does not return phone, photos, account IDs, credentials, or secrets.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "profile": {
      "type": "object",
      "properties": {
        "role": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "surname": {
          "type": "string"
        },
        "email": {
          "type": "string"
        },
        "email_verified": {
          "type": "boolean"
        }
      },
      "additionalProperties": false,
      "required": [
        "role",
        "name",
        "surname",
        "email",
        "email_verified"
      ]
    }
  },
  "required": [
    "profile"
  ],
  "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.

Input Schema

{
  "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
}

Output Schema

{
  "type": "object",
  "properties": {
    "conversations": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "conversation_id": {
            "type": "string"
          },
          "room_title": {
            "type": "string"
          },
          "room_cover_url": {
            "type": "string"
          },
          "other_participant": {
            "type": "object",
            "properties": {
              "role": {
                "type": "string"
              },
              "name": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "required": [
              "role",
              "name"
            ]
          },
          "last_message": {
            "type": "string"
          },
          "last_message_at": {
            "type": [
              "string",
              "null"
            ]
          },
          "unread_count": {
            "type": "integer"
          },
          "messages_loaded": {
            "type": "boolean"
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "sender_name": {
                  "type": "string"
                },
                "is_from_me": {
                  "type": "boolean"
                },
                "message_type": {
                  "type": "string"
                },
                "text": {
                  "type": "string"
                },
                "created_at": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "additionalProperties": false,
              "required": [
                "sender_name",
                "is_from_me",
                "message_type",
                "text",
                "created_at"
              ]
            }
          }
        },
        "additionalProperties": false,
        "required": [
          "conversation_id",
          "room_title",
          "room_cover_url",
          "other_participant",
          "last_message",
          "last_message_at",
          "unread_count",
          "messages_loaded",
          "messages"
        ]
      }
    },
    "total_conversations": {
      "type": "integer"
    },
    "returned_conversations": {
      "type": "integer"
    },
    "unread_messages": {
      "type": "integer"
    },
    "unread_only": {
      "type": "boolean"
    },
    "limit": {
      "type": "integer"
    },
    "messages_limit": {
      "type": "integer"
    },
    "has_more": {
      "type": "boolean"
    },
    "conversation_id": {
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "conversations",
    "total_conversations",
    "returned_conversations",
    "unread_messages",
    "unread_only",
    "limit",
    "messages_limit",
    "has_more",
    "conversation_id"
  ],
  "additionalProperties": false
}
πŸ”΄send_room_message(room_id, message)

Send and permanently store a message to the landlord of an approved available room from the authenticated UniAffitti account. The landlord receives a notification; messages cannot be recalled with this tool. Do not include passwords, payment-card details, government identifiers, health or biometric data.

Input Schema

{
  "type": "object",
  "properties": {
    "room_id": {
      "type": "integer",
      "minimum": 1
    },
    "message": {
      "type": "string",
      "description": "Message to the landlord. Do not include passwords, payment-card details, government identifiers, health or biometric data.",
      "minLength": 1,
      "maxLength": 4000
    }
  },
  "required": [
    "room_id",
    "message"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "sent": {
      "type": "boolean"
    },
    "conversation_id": {
      "type": "string"
    },
    "room_title": {
      "type": "string"
    },
    "landlord_name": {
      "type": "string"
    },
    "web_chat_url": {
      "type": "string"
    }
  },
  "required": [
    "sent",
    "conversation_id",
    "room_title",
    "landlord_name",
    "web_chat_url"
  ],
  "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.

Input Schema

{
  "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
}

Output Schema

{
  "type": "object",
  "properties": {
    "conversations": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "conversation_id": {
            "type": "string"
          },
          "room_title": {
            "type": "string"
          },
          "room_cover_url": {
            "type": "string"
          },
          "other_participant": {
            "type": "object",
            "properties": {
              "role": {
                "type": "string"
              },
              "name": {
                "type": "string"
              }
            },
            "additionalProperties": false,
            "required": [
              "role",
              "name"
            ]
          },
          "last_message": {
            "type": "string"
          },
          "last_message_at": {
            "type": [
              "string",
              "null"
            ]
          },
          "unread_count": {
            "type": "integer"
          },
          "messages_loaded": {
            "type": "boolean"
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "sender_name": {
                  "type": "string"
                },
                "is_from_me": {
                  "type": "boolean"
                },
                "message_type": {
                  "type": "string"
                },
                "text": {
                  "type": "string"
                },
                "created_at": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "additionalProperties": false,
              "required": [
                "sender_name",
                "is_from_me",
                "message_type",
                "text",
                "created_at"
              ]
            }
          }
        },
        "additionalProperties": false,
        "required": [
          "conversation_id",
          "room_title",
          "room_cover_url",
          "other_participant",
          "last_message",
          "last_message_at",
          "unread_count",
          "messages_loaded",
          "messages"
        ]
      }
    },
    "total_conversations": {
      "type": "integer"
    },
    "returned_conversations": {
      "type": "integer"
    },
    "unread_messages": {
      "type": "integer"
    },
    "unread_only": {
      "type": "boolean"
    },
    "limit": {
      "type": "integer"
    },
    "messages_limit": {
      "type": "integer"
    },
    "has_more": {
      "type": "boolean"
    },
    "conversation_id": {
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "conversations",
    "total_conversations",
    "returned_conversations",
    "unread_messages",
    "unread_only",
    "limit",
    "messages_limit",
    "has_more",
    "conversation_id"
  ],
  "additionalProperties": false
}
🟒list_my_favorites

List the authenticated user’s saved available rooms.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "favorites": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "title": {
            "type": "string"
          },
          "price_monthly": {
            "type": [
              "number",
              "null"
            ]
          },
          "price_currency": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "title",
          "price_monthly",
          "price_currency"
        ]
      }
    }
  },
  "required": [
    "favorites"
  ],
  "additionalProperties": false
}
🟑add_favorite(room_id)

Save an approved room to the authenticated user’s favorites.

Input Schema

{
  "type": "object",
  "properties": {
    "room_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "required": [
    "room_id"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "added": {
      "type": "boolean"
    },
    "room_id": {
      "type": "integer"
    }
  },
  "required": [
    "added",
    "room_id"
  ],
  "additionalProperties": false
}
πŸ”΄remove_favorite(room_id)

Remove a room from the authenticated user’s favorites.

Input Schema

{
  "type": "object",
  "properties": {
    "room_id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "required": [
    "room_id"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "removed": {
      "type": "boolean"
    },
    "room_id": {
      "type": "integer"
    }
  },
  "required": [
    "removed",
    "room_id"
  ],
  "additionalProperties": false
}
🟒list_my_requests(direction)

List rental requests sent or received by the authenticated user.

Input Schema

{
  "type": "object",
  "properties": {
    "direction": {
      "type": "string",
      "enum": [
        "sent",
        "received",
        "all"
      ],
      "default": "all"
    }
  },
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "requests": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "message": {
            "type": [
              "string",
              "null"
            ]
          },
          "start_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "duration_months": {
            "type": [
              "integer",
              "null"
            ]
          },
          "status": {
            "type": "string"
          },
          "room_title": {
            "type": "string"
          },
          "student_name": {
            "type": "string"
          },
          "landlord_name": {
            "type": "string"
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "message",
          "start_date",
          "duration_months",
          "status",
          "room_title",
          "student_name",
          "landlord_name"
        ]
      }
    },
    "direction": {
      "type": "string"
    }
  },
  "required": [
    "requests",
    "direction"
  ],
  "additionalProperties": false
}
πŸ”΄create_rental_request(room_id, message, start_date, duration_months)

Create and send a rental request for an approved available room using the authenticated UniAffitti account. The landlord is notified, and the request remains in the account until its status changes. Do not include passwords, payment-card details, government identifiers, health or biometric data in the optional message.

Input Schema

{
  "type": "object",
  "properties": {
    "room_id": {
      "type": "integer",
      "minimum": 1
    },
    "message": {
      "type": "string",
      "description": "Optional message to the landlord. Do not include passwords, payment-card details, government identifiers, health or biometric data.",
      "maxLength": 4000
    },
    "start_date": {
      "type": "string",
      "description": "YYYY-MM-DD."
    },
    "duration_months": {
      "type": "integer",
      "minimum": 1,
      "maximum": 120
    }
  },
  "required": [
    "room_id"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "request_id": {
      "type": "integer"
    },
    "room_title": {
      "type": "string"
    },
    "status": {
      "type": "string"
    }
  },
  "required": [
    "request_id",
    "room_title",
    "status"
  ],
  "additionalProperties": false
}
πŸ”΄update_rental_request_status(request_id, status, available_from)

Change a rental request to in review, accepted, rejected, or cancelled according to the authenticated user’s role. Acceptance marks the room as rented; status changes may notify the other participant.

Input Schema

{
  "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
}

Output Schema

{
  "type": "object",
  "properties": {
    "request_id": {
      "type": "integer"
    },
    "status": {
      "type": "string"
    },
    "available_from": {
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "request_id",
    "status",
    "available_from"
  ],
  "additionalProperties": false
}
🟒list_my_listings

List the authenticated user’s own listings and moderation status.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "listings": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "title": {
            "type": "string"
          },
          "price_monthly": {
            "type": [
              "number",
              "null"
            ]
          },
          "price_currency": {
            "type": [
              "string",
              "null"
            ]
          },
          "room_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "available_from": {
            "type": [
              "string",
              "null"
            ]
          },
          "occupancy_status": {
            "type": [
              "string",
              "null"
            ]
          },
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "country_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "moderation_status": {
            "type": [
              "string",
              "null"
            ]
          },
          "rejection_reason": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "title",
          "price_monthly",
          "price_currency",
          "room_type",
          "available_from",
          "occupancy_status",
          "city",
          "country_code",
          "moderation_status",
          "rejection_reason"
        ]
      }
    }
  },
  "required": [
    "listings"
  ],
  "additionalProperties": false
}
🟑create_listing(title, description, address_full, location_label, city, ...)

Create a listing draft for UniAffitti moderation. It is not public until approved. The draft stores the full property address and coordinates; university and campus IDs remain unset. Do not include passwords, payment-card details, government identifiers, health or biometric data in the description.

Input Schema

{
  "type": "object",
  "properties": {
    "title": {
      "type": "string",
      "minLength": 1,
      "maxLength": 190
    },
    "description": {
      "type": "string",
      "description": "Describe the room and rental terms only. Do not include passwords, payment-card details, government identifiers, health or biometric data.",
      "minLength": 1
    },
    "address_full": {
      "type": "string",
      "description": "Full address of the property being listed; shared with the connector when you create this listing.",
      "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",
      "description": "Exact latitude of the property being listed.",
      "minimum": -90,
      "maximum": 90
    },
    "longitude": {
      "type": "number",
      "description": "Exact longitude of the property being listed.",
      "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
}

Output Schema

{
  "type": "object",
  "properties": {
    "room_id": {
      "type": "integer"
    },
    "moderation_status": {
      "type": "string"
    },
    "location": {
      "type": "object",
      "properties": {
        "city": {
          "type": "string"
        },
        "country_code": {
          "type": "string"
        },
        "location_label": {
          "type": "string"
        }
      },
      "additionalProperties": false,
      "required": [
        "city",
        "country_code",
        "location_label"
      ]
    },
    "next_step": {
      "type": "string"
    }
  },
  "required": [
    "room_id",
    "moderation_status",
    "location",
    "next_step"
  ],
  "additionalProperties": false
}
🟒get_account_links

Return deep links for account, listing creation, messages, requests, and favorites in the full UniAffitti web app.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "web_app": {
      "type": "string"
    },
    "dashboard": {
      "type": "string"
    },
    "favorites": {
      "type": "string"
    },
    "requests": {
      "type": "string"
    },
    "messages": {
      "type": "string"
    },
    "my_listings": {
      "type": "string"
    },
    "create_listing": {
      "type": "string"
    },
    "profile": {
      "type": "string"
    }
  },
  "required": [
    "web_app",
    "dashboard",
    "favorites",
    "requests",
    "messages",
    "my_listings",
    "create_listing",
    "profile"
  ],
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded21 tools
verifiedversion not recorded21 tools
verifiedversion not recorded21 tools
verifiedversion not recorded21 tools
verifiedversion not recorded21 tools
verifiedversion not recorded21 tools