chucho — Book Direct

Find vacation rentals, explore photos and property details, and open direct host booking links.

Should I use this

Quality & Safety

A
Description quality
95%
Schema completeness
81%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~7,591Tokens (tool definitions)
~7.1 KBTypical response size
Significant attention impact (5.93% 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": {
    "chucho": {
      "url": "https://chucho.ai/chatgpt/mcp"
    }
  }
}

Remote endpoints

https://chucho.ai/chatgpt/mcpstreamable-http

What it can do

Tool inventory

Tools (11)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢get_booking_link(id, locale)

Get a currently published property’s confirmed host booking destination and structured reservation handoff. Open that URL to check dates, prices and terms, and complete booking with the host. This tool never creates a reservation or takes payment.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 160
    },
    "locale": {
      "default": "en",
      "type": "string",
      "enum": [
        "en",
        "es"
      ]
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "propertyId": {
      "type": "string"
    },
    "propertyName": {
      "type": "string"
    },
    "bookingUrl": {
      "type": "string",
      "format": "uri"
    },
    "bookingProvider": {
      "type": "string",
      "const": "host"
    },
    "bookingStatus": {
      "type": "string",
      "const": "requires_host_confirmation"
    },
    "reservationCreated": {
      "type": "boolean",
      "const": false
    },
    "instructions": {
      "type": "string"
    },
    "action": {
      "type": "object",
      "properties": {
        "@type": {
          "type": "string",
          "const": "ReserveAction"
        },
        "name": {
          "type": "string"
        },
        "target": {
          "type": "object",
          "properties": {
            "@type": {
              "type": "string",
              "const": "EntryPoint"
            },
            "urlTemplate": {
              "type": "string",
              "format": "uri"
            },
            "actionPlatform": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "required": [
            "@type",
            "urlTemplate",
            "actionPlatform"
          ],
          "additionalProperties": false
        }
      },
      "required": [
        "@type",
        "name",
        "target"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "propertyId",
    "propertyName",
    "bookingUrl",
    "bookingProvider",
    "bookingStatus",
    "reservationCreated",
    "instructions",
    "action"
  ],
  "additionalProperties": false
}
🟢get_filters(locale, organization, q, country, place, ...)

Discover current coverage and supported exact place/area keys when the destination is ambiguous. Returns public organization names/slugs/counts; organization scopes its coverage. Not needed for searches with city, region or country text.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "default": "en",
      "type": "string",
      "enum": [
        "en",
        "es"
      ]
    },
    "organization": {
      "default": "",
      "description": "Exact organization slug returned on a property or in get_filters. Restricts results to that organization, across destinations.",
      "type": "string",
      "maxLength": 160
    },
    "q": {
      "default": "",
      "description": "Public destination name to look up; searches labels, not property descriptions.",
      "type": "string",
      "maxLength": 160
    },
    "country": {
      "default": "",
      "description": "Country name or ISO code to scope counts.",
      "type": "string",
      "maxLength": 160
    },
    "place": {
      "default": "",
      "description": "Exact place key to list its immediate children.",
      "type": "string",
      "maxLength": 240
    },
    "kind": {
      "description": "Destination level. Without a query or scope, lists countries.",
      "type": "string",
      "enum": [
        "country",
        "region",
        "locality"
      ]
    },
    "page": {
      "default": 1,
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    }
  },
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "organizations": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "count": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "name",
          "slug",
          "count"
        ],
        "additionalProperties": false
      }
    },
    "total": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "places": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "fullLabel": {
            "type": "string"
          },
          "kind": {
            "type": "string",
            "enum": [
              "country",
              "region",
              "locality"
            ]
          },
          "countryCode": {
            "type": "string"
          },
          "parentKey": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "urlPath": {
            "type": "string"
          },
          "count": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "key",
          "label",
          "fullLabel",
          "kind",
          "countryCode",
          "parentKey",
          "urlPath",
          "count"
        ],
        "additionalProperties": false
      }
    },
    "features": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "count": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "key",
          "label",
          "count"
        ],
        "additionalProperties": false
      }
    },
    "amenities": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "count": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "key",
          "count"
        ],
        "additionalProperties": false
      }
    },
    "pool": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "totalPlaces": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "page": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "pageSize": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "nextPage": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "organizations",
    "total",
    "places",
    "features",
    "amenities",
    "pool",
    "totalPlaces",
    "page",
    "pageSize",
    "nextPage"
  ],
  "additionalProperties": false
}
🟢search_properties(locale, organization, relatedTo, q, place, ...)

Find vacation rentals, holiday homes and places to stay. Search immediately with free-text city, region or country and guest/pool/amenity needs; use get_filters only for ambiguous destinations or exact place/area keys. Use organization with a returned organization.slug to explore all its homes, or relatedTo with a published property ID for more from that organization, same locality first and other locations included. Results include the organization name and browse link; offer this follow-up when relevant. Shows photos and host booking buttons automatically. Returns approved facts, never rates or availability. Never ask for check-in/check-out dates, stay length or nightly budget; ignore offered dates/budget as filters and search the supported needs now.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "default": "en",
      "type": "string",
      "enum": [
        "en",
        "es"
      ]
    },
    "organization": {
      "default": "",
      "description": "Exact organization slug returned on a property or in get_filters. Restricts results to that organization, across destinations.",
      "type": "string",
      "maxLength": 160
    },
    "relatedTo": {
      "default": "",
      "description": "Published property ID. Find other homes from its organization, same locality first, then region/country and other locations. Excludes the source property. Additional filters still combine with AND.",
      "type": "string",
      "maxLength": 160
    },
    "q": {
      "default": "",
      "description": "Search public property names, locations and approved introduction text.",
      "type": "string",
      "maxLength": 160
    },
    "place": {
      "default": "",
      "description": "Place key from the live filter catalog.",
      "type": "string",
      "maxLength": 240
    },
    "bounds": {
      "default": "",
      "description": "Map viewport as south,west,north,east in degrees; keeps homes whose public area center is inside it. West greater than east crosses the antimeridian.",
      "type": "string",
      "maxLength": 80,
      "pattern": "^$|^-?\\d{1,3}(\\.\\d{1,6})?(,-?\\d{1,3}(\\.\\d{1,6})?){3}$"
    },
    "feature": {
      "default": "",
      "description": "Collection key from the filter catalog.",
      "type": "string",
      "enum": [
        "",
        "private-pools",
        "room-for-4",
        "room-for-6",
        "room-for-8",
        "room-for-10",
        "2-bedrooms",
        "3-bedrooms",
        "4-bedrooms",
        "pets",
        "air-conditioning",
        "workspace",
        "step-free"
      ]
    },
    "country": {
      "default": "",
      "type": "string",
      "maxLength": 160
    },
    "region": {
      "default": "",
      "type": "string",
      "maxLength": 160
    },
    "city": {
      "default": "",
      "type": "string",
      "maxLength": 160
    },
    "guests": {
      "description": "Minimum sleeping capacity.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "minBedrooms": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "minBathrooms": {
      "type": "number",
      "minimum": 0.5,
      "maximum": 50,
      "multipleOf": 0.5
    },
    "amenities": {
      "default": "",
      "description": "Comma-separated amenity keys; every requested amenity must be explicitly present.",
      "type": "string",
      "maxLength": 240
    },
    "pool": {
      "default": "",
      "type": "string",
      "enum": [
        "",
        "present",
        "private",
        "shared",
        "absent"
      ]
    },
    "page": {
      "default": 1,
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    }
  },
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "properties": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "organization": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "slug": {
                    "type": "string"
                  },
                  "canonicalUrl": {
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "slug",
                  "canonicalUrl"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "relatedPropertiesUrl": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "place": {
            "type": "string"
          },
          "summary": {
            "type": "string",
            "maxLength": 240
          },
          "constraint": {
            "type": "string",
            "maxLength": 160
          },
          "amenities": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "canonicalUrl": {
            "type": "string"
          },
          "areaDistanceKm": {
            "type": "number"
          },
          "capacity": {
            "type": "number"
          },
          "bedrooms": {
            "type": "number"
          },
          "beds": {
            "type": "number"
          },
          "bathrooms": {
            "type": "number"
          },
          "pool": {
            "type": "object",
            "properties": {
              "present": {
                "type": "boolean"
              },
              "privacy": {
                "type": "string",
                "enum": [
                  "private",
                  "shared"
                ]
              }
            },
            "required": [
              "present"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "organization",
          "relatedPropertiesUrl",
          "id",
          "name",
          "place",
          "amenities",
          "canonicalUrl"
        ],
        "additionalProperties": false
      }
    },
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "es"
      ]
    },
    "missingIds": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "organization": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "name": {
              "type": "string"
            },
            "slug": {
              "type": "string"
            },
            "canonicalUrl": {
              "type": "string"
            }
          },
          "required": [
            "name",
            "slug",
            "canonicalUrl"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "relatedTo": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "total": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "page": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "pageSize": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "nextPage": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "properties",
    "locale",
    "organization",
    "relatedTo",
    "total",
    "page",
    "pageSize",
    "nextPage"
  ],
  "additionalProperties": false
}
🟢get_property(id, locale)

Read a currently published property's approved facts and host booking link. Unpublished properties return 404 immediately.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 160
    },
    "locale": {
      "default": "en",
      "type": "string",
      "enum": [
        "en",
        "es"
      ]
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "organization": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "name": {
              "type": "string"
            },
            "slug": {
              "type": "string"
            },
            "canonicalUrl": {
              "type": "string"
            }
          },
          "required": [
            "name",
            "slug",
            "canonicalUrl"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "relatedPropertiesUrl": {
      "type": "string"
    },
    "id": {
      "type": "string"
    },
    "slug": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "city": {
      "type": "string"
    },
    "region": {
      "type": "string"
    },
    "country": {
      "type": "string"
    },
    "location": {
      "type": "object",
      "properties": {
        "countryCode": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "revision": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "places": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "key": {
                "type": "string"
              },
              "kind": {
                "type": "string",
                "enum": [
                  "country",
                  "region",
                  "locality"
                ]
              },
              "countryCode": {
                "type": "string"
              },
              "parentKey": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "urlPath": {
                "type": "string"
              },
              "label": {
                "type": "string"
              },
              "labelEs": {
                "type": "string"
              },
              "fullLabel": {
                "type": "string"
              },
              "fullLabelEs": {
                "type": "string"
              },
              "center": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "lat": {
                        "type": "number"
                      },
                      "lng": {
                        "type": "number"
                      }
                    },
                    "required": [
                      "lat",
                      "lng"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "key",
              "kind",
              "countryCode",
              "parentKey",
              "urlPath",
              "label",
              "labelEs",
              "fullLabel",
              "fullLabelEs",
              "center"
            ],
            "additionalProperties": false
          }
        }
      },
      "required": [
        "countryCode",
        "revision",
        "places"
      ],
      "additionalProperties": false
    },
    "facts": {
      "type": "object",
      "properties": {
        "localContent": {
          "maxItems": 40,
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 160
          }
        },
        "capacity": {
          "type": "integer",
          "minimum": 1,
          "maximum": 100
        },
        "bedrooms": {
          "type": "integer",
          "minimum": 0,
          "maximum": 50
        },
        "beds": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "bathrooms": {
          "type": "number",
          "minimum": 0,
          "maximum": 50,
          "multipleOf": 0.5
        },
        "description": {
          "type": "object",
          "properties": {
            "en": {
              "type": "string",
              "minLength": 1,
              "maxLength": 4000
            },
            "es": {
              "type": "string",
              "maxLength": 4000
            }
          },
          "required": [
            "en"
          ],
          "additionalProperties": false
        },
        "positioning": {
          "type": "object",
          "properties": {
            "en": {
              "type": "string",
              "minLength": 1,
              "maxLength": 4000
            },
            "es": {
              "type": "string",
              "maxLength": 4000
            }
          },
          "required": [
            "en"
          ],
          "additionalProperties": false
        },
        "constraint": {
          "type": "object",
          "properties": {
            "en": {
              "type": "string",
              "minLength": 1,
              "maxLength": 4000
            },
            "es": {
              "type": "string",
              "maxLength": 4000
            }
          },
          "required": [
            "en"
          ],
          "additionalProperties": false
        },
        "rooms": {
          "default": [],
          "maxItems": 50,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "object",
                "properties": {
                  "en": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 4000
                  },
                  "es": {
                    "type": "string",
                    "maxLength": 4000
                  }
                },
                "required": [
                  "en"
                ],
                "additionalProperties": false
              },
              "beds": {
                "type": "integer",
                "minimum": 0,
                "maximum": 20
              },
              "bedDescription": {
                "type": "object",
                "properties": {
                  "en": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 4000
                  },
                  "es": {
                    "type": "string",
                    "maxLength": 4000
                  }
                },
                "required": [
                  "en"
                ],
                "additionalProperties": false
              },
              "airConditioning": {
                "type": "boolean"
              },
              "bathroom": {
                "type": "boolean"
              }
            },
            "required": [
              "name"
            ],
            "additionalProperties": false
          }
        },
        "amenities": {
          "default": [],
          "maxItems": 20,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "key": {
                "type": "string",
                "enum": [
                  "air-conditioning",
                  "wifi",
                  "workspace",
                  "parking",
                  "pets",
                  "kitchen",
                  "washer",
                  "step-free"
                ]
              },
              "present": {
                "type": "boolean"
              },
              "detail": {
                "type": "object",
                "properties": {
                  "en": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 4000
                  },
                  "es": {
                    "type": "string",
                    "maxLength": 4000
                  }
                },
                "required": [
                  "en"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "key",
              "present"
            ],
            "additionalProperties": false
          }
        },
        "pool": {
          "type": "object",
          "properties": {
            "present": {
              "type": "boolean"
            },
            "privacy": {
              "type": "string",
              "enum": [
                "private",
                "shared"
              ]
            },
            "fenced": {
              "type": "boolean"
            },
            "heated": {
              "type": "boolean"
            },
            "detail": {
              "type": "object",
              "properties": {
                "en": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 4000
                },
                "es": {
                  "type": "string",
                  "maxLength": 4000
                }
              },
              "required": [
                "en"
              ],
              "additionalProperties": false
            }
          },
          "required": [
            "present"
          ],
          "additionalProperties": false
        },
        "connectivity": {
          "type": "object",
          "properties": {
            "claim": {
              "type": "object",
              "properties": {
                "en": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 4000
                },
                "es": {
                  "type": "string",
                  "maxLength": 4000
                }
              },
              "required": [
                "en"
              ],
              "additionalProperties": false
            },
            "downloadMbps": {
              "type": "number",
              "exclusiveMinimum": 0,
              "maximum": 10000
            },
            "measuredAt": {
              "type": "string",
              "format": "date",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
            }
          },
          "additionalProperties": false
        },
        "rules": {
          "type": "object",
          "properties": {
            "en": {
              "type": "string",
              "minLength": 1,
              "maxLength": 4000
            },
            "es": {
              "type": "string",
              "maxLength": 4000
            }
          },
          "required": [
            "en"
          ],
          "additionalProperties": false
        },
        "checkinTime": {
          "type": "string",
          "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$"
        },
        "checkoutTime": {
          "type": "string",
          "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$"
        },
        "host": {
          "type": "object",
          "properties": {
            "name": {
              "type": "string",
              "maxLength": 160
            },
            "description": {
              "type": "object",
              "properties": {
                "en": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 4000
                },
                "es": {
                  "type": "string",
                  "maxLength": 4000
                }
              },
              "required": [
                "en"
              ],
              "additionalProperties": false
            },
            "languages": {
              "default": [],
              "maxItems": 10,
              "type": "array",
              "items": {
                "type": "string",
                "maxLength": 160
              }
            }
          },
          "required": [
            "name",
            "languages"
          ],
          "additionalProperties": false
        },
        "photos": {
          "default": [],
          "maxItems": 40,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              "caption": {
                "type": "object",
                "properties": {
                  "en": {
                    "type": "string",
                    "maxLength": 4000
                  },
                  "es": {
                    "type": "string",
                    "maxLength": 4000
                  }
                },
                "required": [
                  "en"
                ],
                "additionalProperties": false
              },
              "group": {
                "type": "string",
                "maxLength": 160
              },
              "publicListing": {
                "type": "boolean"
              }
            },
            "required": [
              "id",
              "caption"
            ],
            "additionalProperties": false
          }
        },
        "faq": {
          "default": [],
          "maxItems": 50,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              },
              "question": {
                "type": "object",
                "properties": {
                  "en": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 4000
                  },
                  "es": {
                    "type": "string",
                    "maxLength": 4000
                  }
                },
                "required": [
                  "en"
                ],
                "additionalProperties": false
              },
              "answer": {
                "type": "object",
                "properties": {
                  "en": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 4000
                  },
                  "es": {
                    "type": "string",
                    "maxLength": 4000
                  }
                },
                "required": [
                  "en"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "id",
              "question",
              "answer"
            ],
            "additionalProperties": false
          }
        }
      },
      "required": [
        "rooms",
        "amenities",
        "photos",
        "faq"
      ],
      "additionalProperties": false
    },
    "photos": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "caption": {
            "type": "object",
            "properties": {
              "en": {
                "type": "string"
              },
              "es": {
                "type": "string"
              }
            },
            "required": [
              "en"
            ],
            "additionalProperties": false
          },
          "group": {
            "type": "string"
          },
          "publicListing": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "url",
          "caption"
        ],
        "additionalProperties": false
      }
    },
    "offerings": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "object",
            "properties": {
              "en": {
                "type": "string"
              },
              "es": {
                "type": "string"
              }
            },
            "required": [
              "en"
            ],
            "additionalProperties": false
          },
          "description": {
            "type": "object",
            "properties": {
              "en": {
                "type": "string"
              },
              "es": {
                "type": "string"
              }
            },
            "required": [
              "en"
            ],
            "additionalProperties": false
          },
          "imageUrl": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "enum": [
              "activity",
              "restaurant",
              "grocery",
              "offer"
            ]
          }
        },
        "required": [
          "id",
          "name",
          "description",
          "source"
        ],
        "additionalProperties": false
      }
    },
    "bookingUrl": {
      "type": "string"
    },
    "canonicalUrl": {
      "type": "string"
    },
    "markdownUrl": {
      "type": "string"
    },
    "updatedAt": {
      "type": "string"
    },
    "revision": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "theme": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    }
  },
  "required": [
    "organization",
    "relatedPropertiesUrl",
    "id",
    "slug",
    "name",
    "city",
    "region",
    "country",
    "location",
    "facts",
    "photos",
    "offerings",
    "bookingUrl",
    "canonicalUrl",
    "markdownUrl",
    "updatedAt",
    "revision",
    "theme"
  ],
  "additionalProperties": false
}
🟢render_properties(ids, locale)

Use this when the traveler wants photos or a comparison of homes already found by search_properties. Show one to six matching IDs as cards with Details and host booking links. Rechecks publication. Do not repeat the full cards in prose. Prices and availability are checked on the host website.

Input Schema

{
  "type": "object",
  "properties": {
    "ids": {
      "minItems": 1,
      "maxItems": 6,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 160
      }
    },
    "locale": {
      "default": "en",
      "type": "string",
      "enum": [
        "en",
        "es"
      ]
    }
  },
  "required": [
    "ids"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "properties": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "organization": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "slug": {
                    "type": "string"
                  },
                  "canonicalUrl": {
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "slug",
                  "canonicalUrl"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "relatedPropertiesUrl": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "place": {
            "type": "string"
          },
          "summary": {
            "type": "string",
            "maxLength": 240
          },
          "constraint": {
            "type": "string",
            "maxLength": 160
          },
          "amenities": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "canonicalUrl": {
            "type": "string"
          },
          "areaDistanceKm": {
            "type": "number"
          },
          "capacity": {
            "type": "number"
          },
          "bedrooms": {
            "type": "number"
          },
          "beds": {
            "type": "number"
          },
          "bathrooms": {
            "type": "number"
          },
          "pool": {
            "type": "object",
            "properties": {
              "present": {
                "type": "boolean"
              },
              "privacy": {
                "type": "string",
                "enum": [
                  "private",
                  "shared"
                ]
              }
            },
            "required": [
              "present"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "organization",
          "relatedPropertiesUrl",
          "id",
          "name",
          "place",
          "amenities",
          "canonicalUrl"
        ],
        "additionalProperties": false
      }
    },
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "es"
      ]
    },
    "missingIds": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "properties",
    "locale"
  ],
  "additionalProperties": false
}
🟡record_property_event(id, type, sessionId, locale)

For the property-card UI only: record a property view or successful outbound host-link action. Accepts only a public property ID, a temporary random session UUID, event type and language. Never send conversation text, contacts or URLs. This does not book a stay.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 160
    },
    "type": {
      "type": "string",
      "enum": [
        "public_property_opened",
        "public_booking_referral"
      ]
    },
    "sessionId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "es"
      ]
    }
  },
  "required": [
    "id",
    "type",
    "sessionId",
    "locale"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "accepted": {
      "type": "boolean"
    }
  },
  "required": [
    "accepted"
  ],
  "additionalProperties": false
}
🟢open_explorer(locale, organization, relatedTo, q, place, ...)

Open the published vacation-home browser in ChatGPT. Search by destination, guests and amenities, inspect photos and save homes to the conversation shortlist.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "default": "en",
      "type": "string",
      "enum": [
        "en",
        "es"
      ]
    },
    "organization": {
      "default": "",
      "description": "Exact organization slug returned on a property or in get_filters. Restricts results to that organization, across destinations.",
      "type": "string",
      "maxLength": 160
    },
    "relatedTo": {
      "default": "",
      "description": "Published property ID. Find other homes from its organization, same locality first, then region/country and other locations. Excludes the source property. Additional filters still combine with AND.",
      "type": "string",
      "maxLength": 160
    },
    "q": {
      "default": "",
      "description": "Search public property names, locations and approved introduction text.",
      "type": "string",
      "maxLength": 160
    },
    "place": {
      "default": "",
      "description": "Place key from the live filter catalog.",
      "type": "string",
      "maxLength": 240
    },
    "bounds": {
      "default": "",
      "description": "Map viewport as south,west,north,east in degrees; keeps homes whose public area center is inside it. West greater than east crosses the antimeridian.",
      "type": "string",
      "maxLength": 80,
      "pattern": "^$|^-?\\d{1,3}(\\.\\d{1,6})?(,-?\\d{1,3}(\\.\\d{1,6})?){3}$"
    },
    "feature": {
      "default": "",
      "description": "Collection key from the filter catalog.",
      "type": "string",
      "enum": [
        "",
        "private-pools",
        "room-for-4",
        "room-for-6",
        "room-for-8",
        "room-for-10",
        "2-bedrooms",
        "3-bedrooms",
        "4-bedrooms",
        "pets",
        "air-conditioning",
        "workspace",
        "step-free"
      ]
    },
    "country": {
      "default": "",
      "type": "string",
      "maxLength": 160
    },
    "region": {
      "default": "",
      "type": "string",
      "maxLength": 160
    },
    "city": {
      "default": "",
      "type": "string",
      "maxLength": 160
    },
    "guests": {
      "description": "Minimum sleeping capacity.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "minBedrooms": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "minBathrooms": {
      "type": "number",
      "minimum": 0.5,
      "maximum": 50,
      "multipleOf": 0.5
    },
    "amenities": {
      "default": "",
      "description": "Comma-separated amenity keys; every requested amenity must be explicitly present.",
      "type": "string",
      "maxLength": 240
    },
    "pool": {
      "default": "",
      "type": "string",
      "enum": [
        "",
        "present",
        "private",
        "shared",
        "absent"
      ]
    },
    "page": {
      "default": 1,
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    }
  },
  "additionalProperties": false
}
🟢open_shortlist(locale, organization, relatedTo, q, place, ...)

Open the conversation’s shortlist beside the chat. Saved public property IDs are kept in app model context and refreshed before display.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "default": "en",
      "type": "string",
      "enum": [
        "en",
        "es"
      ]
    },
    "organization": {
      "default": "",
      "description": "Exact organization slug returned on a property or in get_filters. Restricts results to that organization, across destinations.",
      "type": "string",
      "maxLength": 160
    },
    "relatedTo": {
      "default": "",
      "description": "Published property ID. Find other homes from its organization, same locality first, then region/country and other locations. Excludes the source property. Additional filters still combine with AND.",
      "type": "string",
      "maxLength": 160
    },
    "q": {
      "default": "",
      "description": "Search public property names, locations and approved introduction text.",
      "type": "string",
      "maxLength": 160
    },
    "place": {
      "default": "",
      "description": "Place key from the live filter catalog.",
      "type": "string",
      "maxLength": 240
    },
    "bounds": {
      "default": "",
      "description": "Map viewport as south,west,north,east in degrees; keeps homes whose public area center is inside it. West greater than east crosses the antimeridian.",
      "type": "string",
      "maxLength": 80,
      "pattern": "^$|^-?\\d{1,3}(\\.\\d{1,6})?(,-?\\d{1,3}(\\.\\d{1,6})?){3}$"
    },
    "feature": {
      "default": "",
      "description": "Collection key from the filter catalog.",
      "type": "string",
      "enum": [
        "",
        "private-pools",
        "room-for-4",
        "room-for-6",
        "room-for-8",
        "room-for-10",
        "2-bedrooms",
        "3-bedrooms",
        "4-bedrooms",
        "pets",
        "air-conditioning",
        "workspace",
        "step-free"
      ]
    },
    "country": {
      "default": "",
      "type": "string",
      "maxLength": 160
    },
    "region": {
      "default": "",
      "type": "string",
      "maxLength": 160
    },
    "city": {
      "default": "",
      "type": "string",
      "maxLength": 160
    },
    "guests": {
      "description": "Minimum sleeping capacity.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "minBedrooms": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "minBathrooms": {
      "type": "number",
      "minimum": 0.5,
      "maximum": 50,
      "multipleOf": 0.5
    },
    "amenities": {
      "default": "",
      "description": "Comma-separated amenity keys; every requested amenity must be explicitly present.",
      "type": "string",
      "maxLength": 240
    },
    "pool": {
      "default": "",
      "type": "string",
      "enum": [
        "",
        "present",
        "private",
        "shared",
        "absent"
      ]
    },
    "page": {
      "default": 1,
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    }
  },
  "additionalProperties": false
}
🟢search_property_mentions(query)

Search published property names and destinations for the composer’s property picker. Returns public property references only.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "maxLength": 160
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false
}
🟢get_stay_areas(q, locale)

Find named public areas with published chucho homes. Search a destination's town, region or country. Use the exact returned area key for nearby search. These are public locality centers, never property coordinates; unmapped homes remain searchable with search_properties.

Input Schema

{
  "type": "object",
  "properties": {
    "q": {
      "default": "",
      "description": "Public destination name to look up; empty lists current named stay areas.",
      "type": "string",
      "maxLength": 160
    },
    "locale": {
      "default": "en",
      "type": "string",
      "enum": [
        "en",
        "es"
      ]
    }
  },
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "areas": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "count": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "key",
          "label",
          "count"
        ],
        "additionalProperties": false
      }
    },
    "total": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "truncated": {
      "type": "boolean"
    }
  },
  "required": [
    "areas",
    "total",
    "truncated"
  ],
  "additionalProperties": false
}
🟢search_nearby_properties(locale, feature, guests, minBedrooms, minBathrooms, ...)

Find published homes near an exact get_stay_areas key, with guest, bedroom, pool and amenity filters. Distances are approximate between public locality centers, not home locations or driving times. Choose the area using destination evidence or ask the traveler; never invent a key. No live rates or availability. Show returned homes as cards.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "default": "en",
      "type": "string",
      "enum": [
        "en",
        "es"
      ]
    },
    "feature": {
      "default": "",
      "description": "Collection key from the filter catalog.",
      "type": "string",
      "enum": [
        "",
        "private-pools",
        "room-for-4",
        "room-for-6",
        "room-for-8",
        "room-for-10",
        "2-bedrooms",
        "3-bedrooms",
        "4-bedrooms",
        "pets",
        "air-conditioning",
        "workspace",
        "step-free"
      ]
    },
    "guests": {
      "description": "Minimum sleeping capacity.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "minBedrooms": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "minBathrooms": {
      "type": "number",
      "minimum": 0.5,
      "maximum": 50,
      "multipleOf": 0.5
    },
    "amenities": {
      "default": "",
      "description": "Comma-separated amenity keys; every requested amenity must be explicitly present.",
      "type": "string",
      "maxLength": 240
    },
    "pool": {
      "default": "",
      "type": "string",
      "enum": [
        "",
        "present",
        "private",
        "shared",
        "absent"
      ]
    },
    "page": {
      "default": 1,
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    },
    "nearArea": {
      "type": "string",
      "minLength": 1,
      "maxLength": 240,
      "description": "Exact public stay-area key from get_stay_areas; never invent a key or coordinates."
    },
    "radiusKm": {
      "default": 30,
      "description": "Maximum approximate straight-line distance between public area centers, not home GPS or driving distance.",
      "type": "number",
      "minimum": 1,
      "maximum": 100
    }
  },
  "required": [
    "nearArea"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "total": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "page": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "pageSize": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "nextPage": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        {
          "type": "null"
        }
      ]
    },
    "area": {
      "type": "object",
      "properties": {
        "key": {
          "type": "string"
        },
        "label": {
          "type": "string"
        }
      },
      "required": [
        "key",
        "label"
      ],
      "additionalProperties": false
    },
    "radiusKm": {
      "type": "number"
    },
    "distanceBasis": {
      "type": "string"
    },
    "properties": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "organization": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "slug": {
                    "type": "string"
                  },
                  "canonicalUrl": {
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "slug",
                  "canonicalUrl"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "relatedPropertiesUrl": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "place": {
            "type": "string"
          },
          "summary": {
            "type": "string",
            "maxLength": 240
          },
          "constraint": {
            "type": "string",
            "maxLength": 160
          },
          "amenities": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "canonicalUrl": {
            "type": "string"
          },
          "areaDistanceKm": {
            "type": "number"
          },
          "capacity": {
            "type": "number"
          },
          "bedrooms": {
            "type": "number"
          },
          "beds": {
            "type": "number"
          },
          "bathrooms": {
            "type": "number"
          },
          "pool": {
            "type": "object",
            "properties": {
              "present": {
                "type": "boolean"
              },
              "privacy": {
                "type": "string",
                "enum": [
                  "private",
                  "shared"
                ]
              }
            },
            "required": [
              "present"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "organization",
          "relatedPropertiesUrl",
          "id",
          "name",
          "place",
          "amenities",
          "canonicalUrl"
        ],
        "additionalProperties": false
      }
    },
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "es"
      ]
    }
  },
  "required": [
    "total",
    "page",
    "pageSize",
    "nextPage",
    "area",
    "radiusKm",
    "distanceBasis",
    "properties",
    "locale"
  ],
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded11 tools