PropFácil
Search authorized real estate in Mexico and manage favorites and publishing with OAuth.
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"propfacil": {
"url": "https://www.propfacil.com/api/mcp"
}
}
}Puntos de conexión remotos
https://www.propfacil.com/api/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (13)
🟢search_properties(city, transactionType, minPrice, maxPrice, minBedrooms, ...)
Use this when the user wants to find authorized PropFácil property listings in Mexico by city, transaction type, price, bedrooms, or geographic radius.
Esquema de entrada
{
"type": "object",
"properties": {
"city": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "Mexican city or municipality name explicitly requested by the user."
},
"transactionType": {
"type": "string",
"enum": [
"ForSale",
"ForLease"
],
"description": "Listing operation: ForSale to buy or ForLease to rent."
},
"minPrice": {
"type": "number",
"minimum": 0,
"description": "Minimum listing price in the listing currency."
},
"maxPrice": {
"type": "number",
"minimum": 0,
"description": "Maximum listing price in the listing currency."
},
"minBedrooms": {
"type": "integer",
"minimum": 0,
"maximum": 100,
"description": "Minimum number of bedrooms."
},
"near": {
"type": "string",
"pattern": "^-?\\d+(?:\\.\\d+)?,-?\\d+(?:\\.\\d+)?$",
"description": "Map center as lat,lng. Use only a location explicitly supplied by the user."
},
"radius": {
"type": "number",
"minimum": 100,
"maximum": 100000,
"description": "Search radius in meters."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 20,
"description": "Maximum number of results to return."
}
},
"additionalProperties": false,
"dependentRequired": {
"near": [
"radius"
],
"radius": [
"near"
]
}
}Esquema de salida
{
"type": "object",
"properties": {
"count": {
"type": "integer",
"minimum": 0
},
"results": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"listingKey",
"transactionType",
"propertyType",
"price",
"currency",
"bedrooms",
"bathrooms",
"city",
"postalCode",
"latitude",
"longitude",
"photoUrl",
"summary",
"apiUrl",
"webUrl"
],
"properties": {
"listingKey": {
"type": "string"
},
"transactionType": {
"type": "string",
"enum": [
"ForSale",
"ForLease"
]
},
"propertyType": {
"type": "string"
},
"price": {
"type": "number"
},
"currency": {
"type": "string"
},
"bedrooms": {
"type": [
"number",
"null"
]
},
"bathrooms": {
"type": [
"number",
"null"
]
},
"city": {
"type": [
"string",
"null"
]
},
"postalCode": {
"type": [
"string",
"null"
]
},
"latitude": {
"type": [
"number",
"null"
]
},
"longitude": {
"type": [
"number",
"null"
]
},
"photoUrl": {
"type": [
"string",
"null"
]
},
"summary": {
"type": "string"
},
"apiUrl": {
"type": "string",
"format": "uri"
},
"webUrl": {
"type": "string",
"format": "uri"
}
}
}
},
"nextCursor": {
"type": [
"string",
"null"
]
}
},
"required": [
"count",
"results",
"nextCursor"
],
"additionalProperties": false
}🟢get_property(id)
Use this when the user wants the details of one authorized PropFácil listing and has supplied a listingKey or ID from search_properties.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "A listingKey or listing ID returned by search_properties."
}
},
"required": [
"id"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"property": {
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"required": [
"listingKey",
"standardStatus",
"transactionType",
"propertyType",
"price",
"currency",
"bedrooms",
"bathrooms",
"livingArea",
"publicRemarks",
"unparsedAddress",
"postalCode",
"city",
"state",
"country",
"latitude",
"longitude",
"media",
"summary",
"apiUrl",
"webUrl",
"confidence",
"contactAvailable",
"sourceAvailable"
],
"properties": {
"listingKey": {
"type": "string"
},
"standardStatus": {
"type": "string"
},
"transactionType": {
"type": "string",
"enum": [
"ForSale",
"ForLease"
]
},
"propertyType": {
"type": "string"
},
"price": {
"type": "number"
},
"currency": {
"type": "string"
},
"bedrooms": {
"type": [
"number",
"null"
]
},
"bathrooms": {
"type": [
"number",
"null"
]
},
"livingArea": {
"type": [
"number",
"null"
]
},
"publicRemarks": {
"type": [
"string",
"null"
]
},
"unparsedAddress": {
"type": [
"string",
"null"
]
},
"postalCode": {
"type": [
"string",
"null"
]
},
"city": {
"type": [
"string",
"null"
]
},
"state": {
"type": [
"string",
"null"
]
},
"country": {
"type": "string"
},
"latitude": {
"type": [
"number",
"null"
]
},
"longitude": {
"type": [
"number",
"null"
]
},
"media": {
"type": "array",
"maxItems": 12,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"url",
"width",
"height"
],
"properties": {
"url": {
"type": "string",
"format": "uri"
},
"width": {
"type": [
"number",
"null"
]
},
"height": {
"type": [
"number",
"null"
]
}
}
}
},
"summary": {
"type": "string"
},
"apiUrl": {
"type": "string",
"format": "uri"
},
"webUrl": {
"type": "string",
"format": "uri"
},
"confidence": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"contactAvailable": {
"type": "boolean"
},
"sourceAvailable": {
"type": "boolean"
}
}
},
{
"type": "null"
}
]
}
},
"required": [
"property"
],
"additionalProperties": false
}🟢get_property_contact(id)
Use this when the user explicitly asks to contact the advertiser or open the authorized original listing for a property previously returned by PropFácil.
Esquema de entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "A listingKey or listing ID returned by search_properties or get_property."
}
},
"required": [
"id"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"contact": {
"anyOf": [
{
"type": "object",
"additionalProperties": false,
"required": [
"listingKey",
"phone",
"phoneUrl",
"whatsappUrl",
"sourceUrl",
"webUrl"
],
"properties": {
"listingKey": {
"type": "string"
},
"phone": {
"type": [
"string",
"null"
]
},
"phoneUrl": {
"type": [
"string",
"null"
],
"format": "uri"
},
"whatsappUrl": {
"type": [
"string",
"null"
],
"format": "uri"
},
"sourceUrl": {
"type": [
"string",
"null"
],
"format": "uri"
},
"webUrl": {
"type": "string",
"format": "uri"
}
}
},
{
"type": "null"
}
]
}
},
"required": [
"contact"
],
"additionalProperties": false
}🟢render_property_results(propertyIds, title)
Use this when, after search_properties, the user would benefit from interactive property cards, comparison, details, or a map. Pass only listing IDs already returned by a data tool.
Esquema de entrada
{
"type": "object",
"properties": {
"propertyIds": {
"type": "array",
"minItems": 1,
"maxItems": 12,
"uniqueItems": true,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"description": "Up to 12 listingKey values returned by search_properties."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Short user-facing heading for the rendered property selection."
}
},
"required": [
"propertyIds"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"title": {
"type": "string"
},
"count": {
"type": "integer",
"minimum": 0
},
"properties": {
"type": "array",
"maxItems": 12,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"listingKey",
"standardStatus",
"transactionType",
"propertyType",
"price",
"currency",
"bedrooms",
"bathrooms",
"livingArea",
"publicRemarks",
"unparsedAddress",
"postalCode",
"city",
"state",
"country",
"latitude",
"longitude",
"media",
"summary",
"apiUrl",
"webUrl",
"confidence",
"contactAvailable",
"sourceAvailable"
],
"properties": {
"listingKey": {
"type": "string"
},
"standardStatus": {
"type": "string"
},
"transactionType": {
"type": "string",
"enum": [
"ForSale",
"ForLease"
]
},
"propertyType": {
"type": "string"
},
"price": {
"type": "number"
},
"currency": {
"type": "string"
},
"bedrooms": {
"type": [
"number",
"null"
]
},
"bathrooms": {
"type": [
"number",
"null"
]
},
"livingArea": {
"type": [
"number",
"null"
]
},
"publicRemarks": {
"type": [
"string",
"null"
]
},
"unparsedAddress": {
"type": [
"string",
"null"
]
},
"postalCode": {
"type": [
"string",
"null"
]
},
"city": {
"type": [
"string",
"null"
]
},
"state": {
"type": [
"string",
"null"
]
},
"country": {
"type": "string"
},
"latitude": {
"type": [
"number",
"null"
]
},
"longitude": {
"type": [
"number",
"null"
]
},
"media": {
"type": "array",
"maxItems": 12,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"url",
"width",
"height"
],
"properties": {
"url": {
"type": "string",
"format": "uri"
},
"width": {
"type": [
"number",
"null"
]
},
"height": {
"type": [
"number",
"null"
]
}
}
}
},
"summary": {
"type": "string"
},
"apiUrl": {
"type": "string",
"format": "uri"
},
"webUrl": {
"type": "string",
"format": "uri"
},
"confidence": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"contactAvailable": {
"type": "boolean"
},
"sourceAvailable": {
"type": "boolean"
}
}
}
}
},
"required": [
"title",
"count",
"properties"
],
"additionalProperties": false
}🟢restore_property_results
Use this when the PropFácil app needs to restore the latest public property selection for the current MCP session after its widget is recreated.
Esquema de entrada
{
"type": "object",
"properties": {},
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"render": {
"type": [
"object",
"null"
],
"additionalProperties": false,
"required": [
"propertyIds",
"title"
],
"properties": {
"propertyIds": {
"type": "array",
"minItems": 1,
"maxItems": 12,
"items": {
"type": "string"
}
},
"title": {
"type": "string"
}
}
}
},
"required": [
"render"
],
"additionalProperties": false
}🟡publish_property(idempotencyKey, transactionType, price, currency, title, ...)
Use this when an authenticated user explicitly asks to publish a property publicly on PropFácil. This creates a public listing and is safe to retry with the same idempotencyKey.
Esquema de entrada
{
"type": "object",
"properties": {
"idempotencyKey": {
"type": "string",
"minLength": 8,
"maxLength": 100,
"pattern": "^[A-Za-z0-9._:-]+$",
"description": "Stable unique key for this publish request; reuse it when retrying."
},
"transactionType": {
"type": "string",
"enum": [
"ForSale",
"ForLease"
],
"description": "Whether the property is offered for sale or lease."
},
"price": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 500000000,
"description": "Positive advertised price in the selected currency."
},
"currency": {
"type": "string",
"enum": [
"MXN",
"USD"
],
"default": "MXN",
"description": "Currency used for the advertised price."
},
"title": {
"type": "string",
"minLength": 8,
"maxLength": 160,
"description": "Public listing title shown to prospective buyers or tenants."
},
"description": {
"type": "string",
"minLength": 20,
"maxLength": 5000,
"description": "Public, accurate description of the property."
},
"city": {
"type": "string",
"minLength": 2,
"maxLength": 120,
"description": "Mexican city or municipality where the property is located."
},
"state": {
"type": "string",
"maxLength": 120,
"description": "Mexican state where the property is located, when known."
},
"bedrooms": {
"type": "integer",
"minimum": 0,
"maximum": 100,
"description": "Number of bedrooms; use zero only when the property has none."
},
"bathrooms": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Number of bathrooms, including fractional half-bath values when applicable."
},
"areaSqm": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 10000000,
"description": "Property area in square meters."
},
"latitude": {
"type": "number",
"minimum": -90,
"maximum": 90,
"description": "WGS84 latitude for the property location."
},
"longitude": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "WGS84 longitude for the property location."
},
"isCommercial": {
"type": "boolean",
"default": false,
"description": "True for commercial real estate; false for residential real estate."
}
},
"required": [
"idempotencyKey",
"transactionType",
"price",
"title",
"description",
"city"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"published",
"rejected"
]
},
"id": {
"type": [
"string",
"null"
]
},
"url": {
"type": [
"string",
"null"
]
},
"idempotentReplay": {
"type": "boolean"
},
"reasons": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"status",
"id",
"url",
"idempotentReplay",
"reasons"
],
"additionalProperties": false
}🟢my_listings
Use this when an authenticated user asks to review the property listings they published on PropFácil.
Esquema de entrada
{
"type": "object",
"properties": {},
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"listings": {
"type": "array",
"maxItems": 100,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"title",
"price",
"currency",
"transactionType",
"city",
"url",
"isLive"
],
"properties": {
"id": {
"type": "string"
},
"title": {
"type": [
"string",
"null"
]
},
"price": {
"type": [
"number",
"null"
]
},
"currency": {
"type": "string"
},
"transactionType": {
"type": "string",
"enum": [
"ForSale",
"ForLease"
]
},
"city": {
"type": [
"string",
"null"
]
},
"url": {
"type": "string",
"format": "uri"
},
"isLive": {
"type": [
"boolean",
"null"
]
}
}
}
}
},
"required": [
"listings"
],
"additionalProperties": false
}🟢list_property_lists
Use this when an authenticated user wants to see their PropFácil favorite lists. This returns only lists owned by the linked user.
Esquema de entrada
{
"type": "object",
"properties": {},
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"lists": {
"type": "array",
"maxItems": 100,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"name",
"count",
"createdAt"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"count": {
"type": "integer",
"minimum": 0
},
"createdAt": {
"type": "string",
"format": "date-time"
}
}
}
}
},
"required": [
"lists"
],
"additionalProperties": false
}🟢get_property_list(listId)
Use this when an authenticated user wants to inspect one of their PropFácil favorite lists and its saved properties.
Esquema de entrada
{
"type": "object",
"properties": {
"listId": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Identifier of a favorite list owned by the authenticated user."
}
},
"required": [
"listId"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"list": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"name",
"count",
"createdAt"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"count": {
"type": "integer",
"minimum": 0
},
"createdAt": {
"type": "string",
"format": "date-time"
}
}
},
"items": {
"type": "array",
"maxItems": 200,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"property",
"note",
"addedAt"
],
"properties": {
"property": {
"type": "object",
"additionalProperties": false,
"required": [
"listingKey",
"transactionType",
"propertyType",
"price",
"currency",
"bedrooms",
"bathrooms",
"city",
"postalCode",
"latitude",
"longitude",
"photoUrl",
"summary",
"apiUrl",
"webUrl"
],
"properties": {
"listingKey": {
"type": "string"
},
"transactionType": {
"type": "string",
"enum": [
"ForSale",
"ForLease"
]
},
"propertyType": {
"type": "string"
},
"price": {
"type": "number"
},
"currency": {
"type": "string"
},
"bedrooms": {
"type": [
"number",
"null"
]
},
"bathrooms": {
"type": [
"number",
"null"
]
},
"city": {
"type": [
"string",
"null"
]
},
"postalCode": {
"type": [
"string",
"null"
]
},
"latitude": {
"type": [
"number",
"null"
]
},
"longitude": {
"type": [
"number",
"null"
]
},
"photoUrl": {
"type": [
"string",
"null"
]
},
"summary": {
"type": "string"
},
"apiUrl": {
"type": "string",
"format": "uri"
},
"webUrl": {
"type": "string",
"format": "uri"
}
}
},
"note": {
"type": "string"
},
"addedAt": {
"type": "string",
"format": "date-time"
}
}
}
}
},
"required": [
"list",
"items"
],
"additionalProperties": false
}🟡save_property_to_list(propertyId, listId, listName, note)
Use this when an authenticated user asks to save a property to a favorite list. If no list is supplied, use the idempotent default list named Favoritos.
Esquema de entrada
{
"type": "object",
"properties": {
"propertyId": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "A listingKey returned by search_properties."
},
"listId": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Identifier of a favorite list owned by the authenticated user."
},
"listName": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"default": "Favoritos",
"description": "Name for a new favorite list; defaults to Favoritos."
},
"note": {
"type": "string",
"maxLength": 500,
"description": "Optional private note stored with the saved property."
}
},
"required": [
"propertyId"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"saved": {
"type": "boolean"
},
"propertyId": {
"type": "string"
},
"list": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"name",
"count",
"createdAt"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"count": {
"type": "integer",
"minimum": 0
},
"createdAt": {
"type": "string",
"format": "date-time"
}
}
}
},
"required": [
"saved",
"propertyId",
"list"
],
"additionalProperties": false
}🟢rename_property_list(listId, name)
Use this when an authenticated user asks to rename one of their PropFácil favorite lists.
Esquema de entrada
{
"type": "object",
"properties": {
"listId": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Identifier of a favorite list owned by the authenticated user."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "New name for the favorite list."
}
},
"required": [
"listId",
"name"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"list": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"name",
"count",
"createdAt"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"count": {
"type": "integer",
"minimum": 0
},
"createdAt": {
"type": "string",
"format": "date-time"
}
}
}
},
"required": [
"list"
],
"additionalProperties": false
}🔴remove_property_from_list(listId, propertyId)
Use this when an authenticated user asks to remove a saved property from one of their PropFácil lists. The list remains available if it becomes empty.
Esquema de entrada
{
"type": "object",
"properties": {
"listId": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Identifier of a favorite list owned by the authenticated user."
},
"propertyId": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "A listingKey for the saved property to remove."
}
},
"required": [
"listId",
"propertyId"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"removed": {
"type": "boolean"
},
"listId": {
"type": "string"
},
"propertyId": {
"type": "string"
}
},
"required": [
"removed",
"listId",
"propertyId"
],
"additionalProperties": false
}🔴delete_property_list(listId)
Use this when an authenticated user explicitly asks to permanently delete one of their PropFácil favorite lists and its saved entries. Do not use it for removing a single property.
Esquema de entrada
{
"type": "object",
"properties": {
"listId": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Identifier of a favorite list owned by the authenticated user."
}
},
"required": [
"listId"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"deleted": {
"type": "boolean"
},
"listId": {
"type": "string"
}
},
"required": [
"deleted",
"listId"
],
"additionalProperties": false
}Comunidad
Evidencia