Find, rank, and compare student rooms from UniAffitti public listings.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Save an approved room to the authenticated user’s favorites.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Save an approved room to the authenticated user’s favorites.
| Argument | Type | Description |
|---|---|---|
| room_id* | integer |
{
"type": "object",
"required": [
"room_id"
],
"properties": {
"room_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false
}Compare selected public room listings side by side for price, distance, type, availability, features, and trust signals.
| Argument | Type | Description |
|---|---|---|
| room_ids* | array | |
| campus_id | integer |
{
"type": "object",
"required": [
"room_ids"
],
"properties": {
"room_ids": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1
},
"maxItems": 8,
"minItems": 2
},
"campus_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| city* | string | |
| title* | string | |
| features | object | |
| latitude* | number | Exact latitude of the property being listed. |
| longitude* | number | Exact longitude of the property being listed. |
| room_type* | string | |
| description* | string | Describe the room and rental terms only. Do not include passwords, payment-card details, government identifiers, health or biometric data. |
| address_full* | string | Full address of the property being listed; shared with the connector when you create this listing. |
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.
| Argument | Type | Description |
|---|---|---|
| message | string | Optional message to the landlord. Do not include passwords, payment-card details, government identifiers, health or biometric data. |
| room_id* | integer | |
| start_date | string | YYYY-MM-DD. |
| duration_months | integer |
{
"type": "object",
"required": [
"room_id"
],
"properties": {
"message": {
"type": "string",
"maxLength": 4000,
"description": "Optional message to the landlord. Do not include passwords, payment-card details, government identifiers, health or biometric data."
},
"room_id": {
"type": "integer",
"minimum": 1
},
"start_date": {
"type": "string",
"description": "YYYY-MM-DD."
},
"duration_months": {
"type": "integer",
"maximum": 120,
"minimum": 1
}
},
"additionalProperties": false
}Return deep links for account, listing creation, messages, requests, and favorites in the full UniAffitti web app.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| messages_limit | integer | |
| conversation_id* | string | Firebase conversation/thread id. |
{
"type": "object",
"required": [
"conversation_id"
],
"properties": {
"messages_limit": {
"type": "integer",
"default": 50,
"maximum": 100,
"minimum": 1
},
"conversation_id": {
"type": "string",
"description": "Firebase conversation/thread id."
}
},
"additionalProperties": false
}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.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Return public details for one approved room, including user-submitted description, media, features, and limited landlord trust information.
| Argument | Type | Description |
|---|---|---|
| room_id* | integer |
{
"type": "object",
"required": [
"room_id"
],
"properties": {
"room_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false
}List the authenticated user’s saved available rooms.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}List the authenticated user’s own listings and moderation status.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| unread_only | boolean | |
| messages_limit | integer | |
| conversation_id | string | Optional Firebase conversation/thread id. |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"default": 12,
"maximum": 50,
"minimum": 1
},
"unread_only": {
"type": "boolean",
"default": false
},
"messages_limit": {
"type": "integer",
"default": 30,
"maximum": 100,
"minimum": 1
},
"conversation_id": {
"type": "string",
"description": "Optional Firebase conversation/thread id."
}
},
"additionalProperties": false
}List rental requests sent or received by the authenticated user.
| Argument | Type | Description |
|---|---|---|
| direction | string |
{
"type": "object",
"properties": {
"direction": {
"enum": [
"sent",
"received",
"all"
],
"type": "string",
"default": "all"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| university_limit | integer | |
| university_query | string | Filter universities by name, city, country, or alias. |
| university_offset | integer | |
| university_country_code | string | ISO 3166-1 alpha-2 country code. |
{
"type": "object",
"properties": {
"university_limit": {
"type": "integer",
"default": 50,
"maximum": 100,
"minimum": 1
},
"university_query": {
"type": "string",
"description": "Filter universities by name, city, country, or alias."
},
"university_offset": {
"type": "integer",
"default": 0,
"minimum": 0
},
"university_country_code": {
"type": "string",
"description": "ISO 3166-1 alpha-2 country code."
}
},
"additionalProperties": false
}List active campuses for a selected university so the user can refine the room search.
| Argument | Type | Description |
|---|---|---|
| university_id* | integer |
{
"type": "object",
"required": [
"university_id"
],
"properties": {
"university_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| query | string | |
| features | object | |
| campus_id | integer | |
| max_budget | number | |
| available_from | string | YYYY-MM-DD. |
| max_distance_km | number | |
| preferred_room_type | string |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"default": 8,
"maximum": 20,
"minimum": 1
},
"query": {
"type": "string"
},
"features": {
"type": "object",
"additionalProperties": true
},
"campus_id": {
"type": "integer",
"minimum": 1
},
"max_budget": {
"type": "number",
"minimum": 0
},
"available_from": {
"type": "string",
"description": "YYYY-MM-DD."
},
"max_distance_km": {
"type": "number",
"minimum": 0
},
"preferred_room_type": {
"enum": [
"single",
"double",
"bed"
],
"type": "string"
}
},
"additionalProperties": false
}Remove a room from the authenticated user’s favorites.
| Argument | Type | Description |
|---|---|---|
| room_id* | integer |
{
"type": "object",
"required": [
"room_id"
],
"properties": {
"room_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false
}Search cities represented in the active university catalog and public room listings, with country and university counts for assisted room search.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| query | string | |
| offset | integer | |
| country_code | string |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"default": 12,
"maximum": 50,
"minimum": 1
},
"query": {
"type": "string"
},
"offset": {
"type": "integer",
"default": 0,
"minimum": 0
},
"country_code": {
"type": "string"
}
},
"additionalProperties": false
}Search approved, available student rooms by budget, type, university, optional campus, distance, and features. Results include public listing content submitted by UniAffitti users.
| Argument | Type | Description |
|---|---|---|
| city | string | Optional city filter selected from the assisted location search. |
| limit | integer | |
| query | string | Free text search over title, description, university, location, and campus. |
| offset | integer | |
| features | object | |
| order_by | string | |
| campus_id | integer | |
| max_price | number | |
| min_price | number | |
| room_type | string | |
Search the complete active UniAffitti university catalog worldwide with pagination and total count.
| Argument | Type | Description |
|---|---|---|
| city | string | |
| limit | integer | |
| query | string | |
| offset | integer | |
| country_code | string |
{
"type": "object",
"properties": {
"city": {
"type": "string"
},
"limit": {
"type": "integer",
"default": 30,
"maximum": 100,
"minimum": 1
},
"query": {
"type": "string"
},
"offset": {
"type": "integer",
"default": 0,
"minimum": 0
},
"country_code": {
"type": "string"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| message* | string | Message to the landlord. Do not include passwords, payment-card details, government identifiers, health or biometric data. |
| room_id* | integer |
{
"type": "object",
"required": [
"room_id",
"message"
],
"properties": {
"message": {
"type": "string",
"maxLength": 4000,
"minLength": 1,
"description": "Message to the landlord. Do not include passwords, payment-card details, government identifiers, health or biometric data."
},
"room_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| status* | string | |
| request_id* | integer | |
| available_from | string | YYYY-MM-DD; required when accepting. |
{
"type": "object",
"required": [
"request_id",
"status"
],
"properties": {
"status": {
"enum": [
"in_review",
"accepted",
"rejected",
"cancelled"
],
"type": "string"
},
"request_id": {
"type": "integer",
"minimum": 1
},
"available_from": {
"type": "string",
"description": "YYYY-MM-DD; required when accepting."
}
},
"additionalProperties": false
}| country_code* | string | ISO 3166-1 alpha-2 country code. |
| price_monthly* | number |
| property_type | string |
| available_from | string | YYYY-MM-DD. |
| deposit_amount | number |
| location_label | string |
| price_currency | string |
| property_floor* | integer |
| min_stay_months | integer |
| occupancy_status | string |
{
"type": "object",
"required": [
"title",
"description",
"address_full",
"city",
"country_code",
"latitude",
"longitude",
"property_floor",
"price_monthly",
"room_type"
],
"properties": {
"city": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"title": {
"type": "string",
"maxLength": 190,
"minLength": 1
},
"features": {
"type": "object",
"additionalProperties": true
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Exact latitude of the property being listed."
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Exact longitude of the property being listed."
},
"room_type": {
"enum": [
"single",
"double",
"bed"
],
"type": "string"
},
"description": {
"type": "string",
"minLength": 1,
"description": "Describe the room and rental terms only. Do not include passwords, payment-card details, government identifiers, health or biometric data."
},
"address_full": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "Full address of the property being listed; shared with the connector when you create this listing."
},
"country_code": {
"type": "string",
"description": "ISO 3166-1 alpha-2 country code."
},
"price_monthly": {
"type": "number",
"minimum": 0
},
"property_type": {
"enum": [
"apartment",
"house",
"other"
],
"type": "string",
"default": "apartment"
},
"available_from": {
"type": "string",
"description": "YYYY-MM-DD."
},
"deposit_amount": {
"type": "number",
"minimum": 0
},
"location_label": {
"type": "string",
"maxLength": 190
},
"price_currency": {
"type": "string",
"default": "EUR"
},
"property_floor": {
"type": "integer",
"maximum": 20,
"minimum": -2
},
"min_stay_months": {
"type": "integer",
"minimum": 0
},
"occupancy_status": {
"enum": [
"available",
"reserved",
"rented",
"unavailable"
],
"type": "string",
"default": "available"
}
},
"additionalProperties": false
}| country_code |
| string |
| Optional ISO 3166-1 alpha-2 country filter. |
| university_id | integer |
| available_from | string | YYYY-MM-DD. |
| max_distance_km | number |
{
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "Optional city filter selected from the assisted location search."
},
"limit": {
"type": "integer",
"default": 8,
"maximum": 20,
"minimum": 1
},
"query": {
"type": "string",
"description": "Free text search over title, description, university, location, and campus."
},
"offset": {
"type": "integer",
"default": 0,
"minimum": 0
},
"features": {
"type": "object",
"additionalProperties": true
},
"order_by": {
"enum": [
"newest",
"price_asc",
"price_desc",
"distance_asc",
"distance_desc"
],
"type": "string",
"default": "newest"
},
"campus_id": {
"type": "integer",
"minimum": 1
},
"max_price": {
"type": "number",
"minimum": 0
},
"min_price": {
"type": "number",
"minimum": 0
},
"room_type": {
"enum": [
"single",
"double",
"bed"
],
"type": "string"
},
"country_code": {
"type": "string",
"description": "Optional ISO 3166-1 alpha-2 country filter."
},
"university_id": {
"type": "integer",
"minimum": 1
},
"available_from": {
"type": "string",
"description": "YYYY-MM-DD."
},
"max_distance_km": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
}