mcp

Search Portland rentals, compare homes, save a shortlist, and get a live quote. No payments.

Should I use this

Quality & Safety

A
Description quality
99%
Schema completeness
79%
Naming quality
93%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~7,911Tokens (tool definitions)
~5.5 KBTypical response size
Significant attention impact (6.18% 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": {
    "mcp": {
      "url": "https://www.stayportland.com/mcp"
    }
  }
}

Remote endpoints

https://www.stayportland.com/mcpstreamable-http

What it can do

Tool inventory

Tools (14)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟡prepare_booking(listing, checkin, checkout, guests, petCount)

Create a fresh exact-date quote and secure hosted checkout link. Share the link with the guest for price review, details and payment approval. This tool never books, charges, or accepts card details. Its capability lets this agent check only this quote's booking status.

Input Schema

{
  "type": "object",
  "properties": {
    "listing": {
      "type": "string",
      "maxLength": 200
    },
    "checkin": {
      "type": "string",
      "maxLength": 10,
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "YYYY-MM-DD"
    },
    "checkout": {
      "type": "string",
      "maxLength": 10,
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "YYYY-MM-DD"
    },
    "guests": {
      "type": "integer",
      "minimum": 1,
      "maximum": 16
    },
    "petCount": {
      "description": "Pets attending; their checkout fees and applicable taxes are excluded from this base quote and must be approved in hosted checkout.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10
    }
  },
  "required": [
    "listing",
    "checkin",
    "checkout"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "quoteId": {
      "type": "string"
    },
    "listingTitle": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "checkin": {
      "type": "string"
    },
    "checkout": {
      "type": "string"
    },
    "guests": {
      "type": "number"
    },
    "nights": {
      "type": "number"
    },
    "accommodation": {
      "type": "number"
    },
    "cleaning": {
      "type": "number"
    },
    "taxes": {
      "type": "number"
    },
    "total": {
      "type": "number"
    },
    "totalCents": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "inventoryHeld": {
      "type": "boolean",
      "const": false
    },
    "priceIncludes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "priceExcludes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "petCount": {
      "type": "integer",
      "minimum": 0,
      "maximum": 10
    },
    "currency": {
      "type": "string",
      "const": "USD"
    },
    "checkoutUrl": {
      "type": "string"
    },
    "expiresAt": {
      "type": "string"
    },
    "expiresNote": {
      "type": "string"
    },
    "note": {
      "type": "string"
    },
    "bookingCapability": {
      "type": "string"
    },
    "capabilityExpiresAt": {
      "type": "string"
    },
    "guestApprovalRequired": {
      "type": "boolean",
      "const": true
    }
  },
  "required": [
    "quoteId",
    "listingTitle",
    "checkin",
    "checkout",
    "guests",
    "nights",
    "accommodation",
    "cleaning",
    "taxes",
    "total",
    "totalCents",
    "currency",
    "checkoutUrl",
    "expiresNote",
    "note",
    "bookingCapability",
    "capabilityExpiresAt",
    "guestApprovalRequired"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_booking_status(bookingCapability)

Read the coarse status of the exact checkout prepared by this agent. Requires its private booking capability. Returns no guest, card, PaymentIntent, or reservation identifiers.

Input Schema

{
  "type": "object",
  "properties": {
    "bookingCapability": {
      "type": "string",
      "minLength": 100,
      "maxLength": 900
    }
  },
  "required": [
    "bookingCapability"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "state": {
      "type": "string",
      "enum": [
        "awaiting_guest",
        "awaiting_payment",
        "needs_guest_action",
        "payment_processing",
        "finalizing",
        "confirmed",
        "assistance_required"
      ]
    },
    "nextAction": {
      "type": "string",
      "enum": [
        "open_checkout",
        "finish_guest_verification",
        "wait",
        "complete_booking",
        "contact_support",
        "done"
      ]
    },
    "retryAfterSeconds": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "quoteId": {
      "type": "string"
    },
    "checkoutUrl": {
      "type": "string"
    },
    "note": {
      "type": "string"
    }
  },
  "required": [
    "state",
    "nextAction",
    "quoteId",
    "checkoutUrl",
    "note"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🔴complete_booking(bookingCapability)

Resume the site's existing reservation finalizer only after the guest approved and authorized payment in hosted checkout. This cannot create or authorize a payment. Completion is controlled by a server flag; check status to follow an in-progress checkout.

Input Schema

{
  "type": "object",
  "properties": {
    "bookingCapability": {
      "type": "string",
      "minLength": 100,
      "maxLength": 900
    }
  },
  "required": [
    "bookingCapability"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "state": {
      "type": "string",
      "enum": [
        "awaiting_guest",
        "awaiting_payment",
        "needs_guest_action",
        "payment_processing",
        "finalizing",
        "confirmed",
        "assistance_required"
      ]
    },
    "nextAction": {
      "type": "string",
      "enum": [
        "open_checkout",
        "finish_guest_verification",
        "wait",
        "complete_booking",
        "contact_support",
        "done"
      ]
    },
    "retryAfterSeconds": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "quoteId": {
      "type": "string"
    },
    "checkoutUrl": {
      "type": "string"
    },
    "note": {
      "type": "string"
    }
  },
  "required": [
    "state",
    "nextAction",
    "quoteId",
    "checkoutUrl",
    "note"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢search_properties(checkin, checkout, dateWindows, guests, bedrooms, ...)

Search Portland rentals across up to five date windows with verified layout, amenity, traveler-fit, accommodation-only price, rating, and neighborhood evidence. Dated results are live-bookable only. Use search_priced_availability when a traveler provides one date range and needs confirmed base prices including cleaning and stay taxes. After choosing candidates, call compare_properties for the visual explorer. Stay Portland charges no platform or booking fees when you book direct, and every direct booking comes with our guaranteed lowest price.

Input Schema

{
  "type": "object",
  "properties": {
    "checkin": {
      "type": "string",
      "maxLength": 10,
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "YYYY-MM-DD"
    },
    "checkout": {
      "type": "string",
      "maxLength": 10,
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "YYYY-MM-DD"
    },
    "dateWindows": {
      "minItems": 1,
      "maxItems": 5,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "checkin": {
            "type": "string",
            "maxLength": 10,
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "description": "YYYY-MM-DD"
          },
          "checkout": {
            "type": "string",
            "maxLength": 10,
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "description": "YYYY-MM-DD"
          }
        },
        "required": [
          "checkin",
          "checkout"
        ]
      }
    },
    "guests": {
      "type": "integer",
      "minimum": 1,
      "maximum": 16
    },
    "bedrooms": {
      "type": "integer",
      "minimum": 0,
      "maximum": 8
    },
    "bathrooms": {
      "type": "integer",
      "minimum": 0,
      "maximum": 12
    },
    "beds": {
      "type": "integer",
      "minimum": 0,
      "maximum": 24
    },
    "pets": {
      "type": "boolean"
    },
    "neighborhood": {
      "type": "string",
      "maxLength": 200
    },
    "q": {
      "description": "public feature, neighborhood, or listing-copy criteria",
      "type": "string",
      "maxLength": 200
    },
    "maxNightly": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 10000
    },
    "propertyTypes": {
      "maxItems": 7,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "apartment",
          "house",
          "condominium",
          "townhouse",
          "loft",
          "bungalow",
          "cabin"
        ]
      }
    },
    "amenities": {
      "maxItems": 12,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "hot_tub",
          "fireplace",
          "backyard",
          "workspace",
          "wifi",
          "air_conditioning",
          "washer",
          "dryer",
          "kitchen",
          "crib",
          "high_chair",
          "elevator",
          "parking"
        ]
      }
    },
    "personas": {
      "maxItems": 5,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "family",
          "groups",
          "luxury",
          "budget",
          "extended_stay",
          "remote_work",
          "romantic"
        ]
      }
    },
    "sort": {
      "type": "string",
      "enum": [
        "recommended",
        "price_low",
        "price_high",
        "rating",
        "capacity_fit"
      ]
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "maximum": 300
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "properties": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "sleeps": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "bedrooms": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "bathrooms": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "beds": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "propertyType": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "neighborhood": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "petsAllowed": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ]
          },
          "rating": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "reviewCount": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "fromNightly": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "stayTotal": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "priceBasis": {
            "type": "string",
            "enum": [
              "from-nightly-accommodation",
              "dated-stay-accommodation-pre-tax"
            ]
          },
          "currency": {
            "type": "string",
            "const": "USD"
          },
          "image": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "photos": {
            "maxItems": 6,
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "availableCheckin": {
            "type": "string"
          },
          "availableCheckout": {
            "type": "string"
          },
          "matchScore": {
            "type": "number"
          },
          "matchReasons": {
            "maxItems": 6,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "kind": {
                  "type": "string",
                  "enum": [
                    "amenity",
                    "persona",
                    "query"
                  ]
                },
                "label": {
                  "type": "string"
                },
                "evidence": {
                  "type": "string"
                }
              },
              "required": [
                "kind",
                "label",
                "evidence"
              ],
              "additionalProperties": false
            }
          },
          "bookUrl": {
            "type": "string"
          },
          "markdownUrl": {
            "type": "string"
          }
        },
        "required": [
          "slug",
          "title",
          "sleeps",
          "bedrooms",
          "bathrooms",
          "neighborhood",
          "petsAllowed",
          "fromNightly",
          "stayTotal",
          "currency",
          "image",
          "bookUrl",
          "markdownUrl"
        ],
        "additionalProperties": false
      }
    },
    "count": {
      "type": "number"
    },
    "availableCount": {
      "type": "number"
    },
    "hasMore": {
      "type": "boolean"
    },
    "nextOffset": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ]
    },
    "dated": {
      "type": "boolean"
    },
    "priceBasis": {
      "type": "string",
      "enum": [
        "from-nightly-accommodation",
        "dated-stay-accommodation-pre-tax"
      ]
    },
    "checkin": {
      "type": "string"
    },
    "checkout": {
      "type": "string"
    },
    "guests": {
      "type": "number"
    },
    "dateOptions": {
      "maxItems": 5,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "checkin": {
            "type": "string"
          },
          "checkout": {
            "type": "string"
          },
          "count": {
            "type": "number"
          },
          "availableCount": {
            "type": "number"
          },
          "hasMore": {
            "type": "boolean"
          },
          "nextOffset": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "properties": {
            "maxItems": 4,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "slug": {
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "sleeps": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "bedrooms": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "bathrooms": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "beds": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "propertyType": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "neighborhood": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "petsAllowed": {
                  "anyOf": [
                    {
                      "type": "boolean"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "rating": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "reviewCount": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "fromNightly": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "stayTotal": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "priceBasis": {
                  "type": "string",
                  "enum": [
                    "from-nightly-accommodation",
                    "dated-stay-accommodation-pre-tax"
                  ]
                },
                "currency": {
                  "type": "string",
                  "const": "USD"
                },
                "image": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "photos": {
                  "maxItems": 6,
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "availableCheckin": {
                  "type": "string"
                },
                "availableCheckout": {
                  "type": "string"
                },
                "matchScore": {
                  "type": "number"
                },
                "matchReasons": {
                  "maxItems": 6,
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "kind": {
                        "type": "string",
                        "enum": [
                          "amenity",
                          "persona",
                          "query"
                        ]
                      },
                      "label": {
                        "type": "string"
                      },
                      "evidence": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "label",
                      "evidence"
                    ],
                    "additionalProperties": false
                  }
                },
                "bookUrl": {
                  "type": "string"
                },
                "markdownUrl": {
                  "type": "string"
                }
              },
              "required": [
                "slug",
                "title",
                "sleeps",
                "bedrooms",
                "bathrooms",
                "neighborhood",
                "petsAllowed",
                "fromNightly",
                "stayTotal",
                "currency",
                "image",
                "bookUrl",
                "markdownUrl"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "checkin",
          "checkout",
          "count",
          "hasMore",
          "nextOffset",
          "properties"
        ],
        "additionalProperties": false
      }
    },
    "note": {
      "type": "string"
    }
  },
  "required": [
    "properties",
    "count",
    "hasMore",
    "nextOffset",
    "dated",
    "note"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢search_priced_availability(checkin, checkout, guests, petCount, bedrooms, ...)

Search Stay Portland's live availability for one required date range and return up to six exact base quotes per page. Use this first when a traveler provides dates and asks for options, full prices, fees, taxes, a budget comparison, or checkout links. Each result includes the home, accommodation, cleaning, taxes, USD base total, excluded pet fees and extras, and temporary checkout URL. Price sorting applies within the returned page. Use nextOffset to continue through matching inventory; retry unpricedProperties individually with get_quote. Quote creation never reserves, books, charges, or collects payment details.

Input Schema

{
  "type": "object",
  "properties": {
    "checkin": {
      "type": "string",
      "maxLength": 10,
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "YYYY-MM-DD"
    },
    "checkout": {
      "type": "string",
      "maxLength": 10,
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "YYYY-MM-DD"
    },
    "guests": {
      "type": "integer",
      "minimum": 1,
      "maximum": 16
    },
    "petCount": {
      "description": "Pets attending; their checkout fees and applicable taxes are excluded from this base quote and must be approved in hosted checkout.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10
    },
    "bedrooms": {
      "type": "integer",
      "minimum": 0,
      "maximum": 8
    },
    "bathrooms": {
      "type": "integer",
      "minimum": 0,
      "maximum": 12
    },
    "beds": {
      "type": "integer",
      "minimum": 0,
      "maximum": 24
    },
    "pets": {
      "type": "boolean"
    },
    "neighborhood": {
      "type": "string",
      "maxLength": 200
    },
    "q": {
      "description": "public feature, neighborhood, or listing-copy criteria",
      "type": "string",
      "maxLength": 200
    },
    "maxNightly": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 10000
    },
    "propertyTypes": {
      "maxItems": 7,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "apartment",
          "house",
          "condominium",
          "townhouse",
          "loft",
          "bungalow",
          "cabin"
        ]
      }
    },
    "amenities": {
      "maxItems": 12,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "hot_tub",
          "fireplace",
          "backyard",
          "workspace",
          "wifi",
          "air_conditioning",
          "washer",
          "dryer",
          "kitchen",
          "crib",
          "high_chair",
          "elevator",
          "parking"
        ]
      }
    },
    "personas": {
      "maxItems": 5,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "family",
          "groups",
          "luxury",
          "budget",
          "extended_stay",
          "remote_work",
          "romantic"
        ]
      }
    },
    "sort": {
      "type": "string",
      "enum": [
        "recommended",
        "price_low",
        "price_high",
        "rating",
        "capacity_fit"
      ]
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "maximum": 300
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 6
    }
  },
  "required": [
    "checkin",
    "checkout"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "properties": {
      "maxItems": 6,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "property": {
            "type": "object",
            "properties": {
              "slug": {
                "type": "string"
              },
              "title": {
                "type": "string"
              },
              "sleeps": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "bedrooms": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "bathrooms": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "beds": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "propertyType": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "neighborhood": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "petsAllowed": {
                "anyOf": [
                  {
                    "type": "boolean"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "rating": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "reviewCount": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "fromNightly": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "stayTotal": {
                "anyOf": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "priceBasis": {
                "type": "string",
                "enum": [
                  "from-nightly-accommodation",
                  "dated-stay-accommodation-pre-tax"
                ]
              },
              "currency": {
                "type": "string",
                "const": "USD"
              },
              "image": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "photos": {
                "maxItems": 6,
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "availableCheckin": {
                "type": "string"
              },
              "availableCheckout": {
                "type": "string"
              },
              "matchScore": {
                "type": "number"
              },
              "matchReasons": {
                "maxItems": 6,
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "enum": [
                        "amenity",
                        "persona",
                        "query"
                      ]
                    },
                    "label": {
                      "type": "string"
                    },
                    "evidence": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "kind",
                    "label",
                    "evidence"
                  ],
                  "additionalProperties": false
                }
              },
              "bookUrl": {
                "type": "string"
              },
              "markdownUrl": {
                "type": "string"
              }
            },
            "required": [
              "slug",
              "title",
              "sleeps",
              "bedrooms",
              "bathrooms",
              "neighborhood",
              "petsAllowed",
              "fromNightly",
              "stayTotal",
              "currency",
              "image",
              "bookUrl",
              "markdownUrl"
            ],
            "additionalProperties": false
          },
          "quote": {
            "type": "object",
            "properties": {
              "quoteId": {
                "type": "string"
              },
              "listingTitle": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "checkin": {
                "type": "string"
              },
              "checkout": {
                "type": "string"
              },
              "guests": {
                "type": "number"
              },
              "nights": {
                "type": "number"
              },
              "accommodation": {
                "type": "number"
              },
              "cleaning": {
                "type": "number"
              },
              "taxes": {
                "type": "number"
              },
              "total": {
                "type": "number"
              },
              "totalCents": {
                "type": "integer",
                "exclusiveMinimum": 0,
                "maximum": 9007199254740991
              },
              "inventoryHeld": {
                "type": "boolean",
                "const": false
              },
              "priceIncludes": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "priceExcludes": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "petCount": {
                "type": "integer",
                "minimum": 0,
                "maximum": 10
              },
              "currency": {
                "type": "string",
                "const": "USD"
              },
              "checkoutUrl": {
                "type": "string"
              },
              "expiresAt": {
                "type": "string"
              },
              "expiresNote": {
                "type": "string"
              },
              "note": {
                "type": "string"
              }
            },
            "required": [
              "quoteId",
              "listingTitle",
              "checkin",
              "checkout",
              "guests",
              "nights",
              "accommodation",
              "cleaning",
              "taxes",
              "total",
              "totalCents",
              "currency",
              "checkoutUrl",
              "expiresNote",
              "note"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "property",
          "quote"
        ],
        "additionalProperties": false
      }
    },
    "count": {
      "type": "number"
    },
    "availableCount": {
      "type": "number"
    },
    "unpricedCount": {
      "type": "number"
    },
    "incomplete": {
      "type": "boolean"
    },
    "unpricedProperties": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "listing": {
            "type": "string"
          },
          "reason": {
            "type": "string",
            "enum": [
              "unavailable",
              "provider_error",
              "deadline"
            ]
          }
        },
        "required": [
          "listing",
          "reason"
        ],
        "additionalProperties": false
      }
    },
    "hasMore": {
      "type": "boolean"
    },
    "nextOffset": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ]
    },
    "checkin": {
      "type": "string"
    },
    "checkout": {
      "type": "string"
    },
    "guests": {
      "type": "number"
    },
    "pagePriceRange": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "minTotal": {
              "type": "number"
            },
            "maxTotal": {
              "type": "number"
            },
            "currency": {
              "type": "string",
              "const": "USD"
            }
          },
          "required": [
            "minTotal",
            "maxTotal",
            "currency"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "note": {
      "type": "string"
    }
  },
  "required": [
    "properties",
    "count",
    "availableCount",
    "unpricedCount",
    "hasMore",
    "nextOffset",
    "checkin",
    "checkout",
    "guests",
    "pagePriceRange",
    "note"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢compare_properties(listings)

Render a visual, source-grounded comparison for two to five listing ids or slugs selected from search_properties. Preserves the requested order and returns public listing profiles.

Input Schema

{
  "type": "object",
  "properties": {
    "listings": {
      "minItems": 2,
      "maxItems": 5,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 200
      }
    }
  },
  "required": [
    "listings"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "properties": {
      "maxItems": 5,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "sleeps": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "bedrooms": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "bathrooms": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "beds": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "squareFeet": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "propertyType": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "roomType": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "neighborhood": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "petsAllowed": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ]
          },
          "parking": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "minNights": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "houseRules": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "amenities": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "fromNightly": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "cleaningFee": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "checkinTime": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "checkoutTime": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "rating": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "reviewCount": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "reviewSummary": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "image": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "photos": {
            "maxItems": 12,
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "bookUrl": {
            "type": "string"
          },
          "markdownUrl": {
            "type": "string"
          }
        },
        "required": [
          "slug",
          "title",
          "description",
          "sleeps",
          "bedrooms",
          "bathrooms",
          "beds",
          "squareFeet",
          "propertyType",
          "roomType",
          "neighborhood",
          "petsAllowed",
          "parking",
          "minNights",
          "houseRules",
          "amenities",
          "fromNightly",
          "cleaningFee",
          "checkinTime",
          "checkoutTime",
          "rating",
          "reviewCount",
          "reviewSummary",
          "image",
          "photos",
          "bookUrl",
          "markdownUrl"
        ],
        "additionalProperties": false
      }
    },
    "compared": {
      "type": "number"
    },
    "guidance": {
      "type": "string"
    }
  },
  "required": [
    "properties",
    "compared",
    "guidance"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢suggest_alternate_dates(listing, checkin, checkout, flexDays, limit)

For one live listing, find the closest calendar-confirmed stays with the same length when preferred dates do not work. Results are not priced; call get_quote for the final total.

Input Schema

{
  "type": "object",
  "properties": {
    "listing": {
      "type": "string",
      "maxLength": 200
    },
    "checkin": {
      "type": "string",
      "maxLength": 10,
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "YYYY-MM-DD"
    },
    "checkout": {
      "type": "string",
      "maxLength": 10,
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "YYYY-MM-DD"
    },
    "flexDays": {
      "type": "integer",
      "minimum": 1,
      "maximum": 14
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 5
    }
  },
  "required": [
    "listing",
    "checkin",
    "checkout"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "listingId": {
      "type": "string"
    },
    "listingTitle": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "requestedCheckin": {
      "type": "string"
    },
    "requestedCheckout": {
      "type": "string"
    },
    "alternatives": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "checkin": {
            "type": "string"
          },
          "checkout": {
            "type": "string"
          },
          "nights": {
            "type": "number"
          },
          "shiftDays": {
            "type": "number"
          }
        },
        "required": [
          "checkin",
          "checkout",
          "nights",
          "shiftDays"
        ],
        "additionalProperties": false
      }
    },
    "note": {
      "type": "string"
    }
  },
  "required": [
    "listingId",
    "listingTitle",
    "requestedCheckin",
    "requestedCheckout",
    "alternatives",
    "note"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_collection_overview

Public portfolio overview: live home count, Portland neighborhoods, direct-booking advantages, policies, and the no-payment tool boundary.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "const": "Stay Portland"
    },
    "city": {
      "type": "string",
      "const": "Portland, Oregon"
    },
    "listingCount": {
      "type": "number"
    },
    "neighborhoods": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "advantages": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "bookingBoundary": {
      "type": "string"
    },
    "browseUrl": {
      "type": "string"
    },
    "policiesUrl": {
      "type": "string"
    }
  },
  "required": [
    "name",
    "city",
    "listingCount",
    "neighborhoods",
    "advantages",
    "bookingBoundary",
    "browseUrl",
    "policiesUrl"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_listing(listing)

Full profile for one listing by Guesty id or slug: specs, amenities, rules, prices.

Input Schema

{
  "type": "object",
  "properties": {
    "listing": {
      "type": "string",
      "maxLength": 200,
      "description": "24-hex Guesty id or property slug"
    }
  },
  "required": [
    "listing"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "description": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "sleeps": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ]
    },
    "bedrooms": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ]
    },
    "bathrooms": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ]
    },
    "beds": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ]
    },
    "squareFeet": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ]
    },
    "propertyType": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "roomType": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "neighborhood": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "petsAllowed": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ]
    },
    "parking": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "minNights": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ]
    },
    "houseRules": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "amenities": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "fromNightly": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ]
    },
    "cleaningFee": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ]
    },
    "checkinTime": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "checkoutTime": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "rating": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ]
    },
    "reviewCount": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ]
    },
    "reviewSummary": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "image": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "photos": {
      "maxItems": 12,
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "bookUrl": {
      "type": "string"
    },
    "markdownUrl": {
      "type": "string"
    }
  },
  "required": [
    "slug",
    "title",
    "description",
    "sleeps",
    "bedrooms",
    "bathrooms",
    "beds",
    "squareFeet",
    "propertyType",
    "roomType",
    "neighborhood",
    "petsAllowed",
    "parking",
    "minNights",
    "houseRules",
    "amenities",
    "fromNightly",
    "cleaningFee",
    "checkinTime",
    "checkoutTime",
    "rating",
    "reviewCount",
    "reviewSummary",
    "image",
    "photos",
    "bookUrl",
    "markdownUrl"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_quote(listing, checkin, checkout, guests, petCount)

Live all-in quote (nights + cleaning + taxes) and a checkout URL. Hand the guest the URL; never collect card details.

Input Schema

{
  "type": "object",
  "properties": {
    "listing": {
      "type": "string",
      "maxLength": 200
    },
    "checkin": {
      "type": "string",
      "maxLength": 10,
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "YYYY-MM-DD"
    },
    "checkout": {
      "type": "string",
      "maxLength": 10,
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "YYYY-MM-DD"
    },
    "guests": {
      "type": "integer",
      "minimum": 1,
      "maximum": 16
    },
    "petCount": {
      "description": "Pets attending; their checkout fees and applicable taxes are excluded from this base quote and must be approved in hosted checkout.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10
    }
  },
  "required": [
    "listing",
    "checkin",
    "checkout"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "quoteId": {
      "type": "string"
    },
    "listingTitle": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "checkin": {
      "type": "string"
    },
    "checkout": {
      "type": "string"
    },
    "guests": {
      "type": "number"
    },
    "nights": {
      "type": "number"
    },
    "accommodation": {
      "type": "number"
    },
    "cleaning": {
      "type": "number"
    },
    "taxes": {
      "type": "number"
    },
    "total": {
      "type": "number"
    },
    "totalCents": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "inventoryHeld": {
      "type": "boolean",
      "const": false
    },
    "priceIncludes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "priceExcludes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "petCount": {
      "type": "integer",
      "minimum": 0,
      "maximum": 10
    },
    "currency": {
      "type": "string",
      "const": "USD"
    },
    "checkoutUrl": {
      "type": "string"
    },
    "expiresAt": {
      "type": "string"
    },
    "expiresNote": {
      "type": "string"
    },
    "note": {
      "type": "string"
    }
  },
  "required": [
    "quoteId",
    "listingTitle",
    "checkin",
    "checkout",
    "guests",
    "nights",
    "accommodation",
    "cleaning",
    "taxes",
    "total",
    "totalCents",
    "currency",
    "checkoutUrl",
    "expiresNote",
    "note"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_reviews(listing, limit, offset, sort)

Recent guest reviews — for one listing (by Guesty id or slug) or across the whole collection. Text, rating, and month+year only.

Input Schema

{
  "type": "object",
  "properties": {
    "listing": {
      "description": "24-hex Guesty id or property slug; omit for all homes",
      "type": "string",
      "maxLength": 200
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "maximum": 100
    },
    "sort": {
      "type": "string",
      "enum": [
        "recent",
        "rating_high"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "scope": {
      "type": "string",
      "enum": [
        "property",
        "collection"
      ]
    },
    "count": {
      "type": "number"
    },
    "averageRating": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ]
    },
    "nextOffset": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ]
    },
    "reviews": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "rating": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "YYYY-MM"
          },
          "text": {
            "type": "string",
            "maxLength": 2000
          }
        },
        "required": [
          "rating",
          "date",
          "text"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "scope",
    "count",
    "averageRating",
    "nextOffset",
    "reviews"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🔴shortlist_property(listing, remove, session_token)

Save one property to the guest's list for this conversation, or drop it with remove: true. The result carries a sessionToken — reuse that exact token on every later shortlist_property and get_shortlist call in this conversation. Never read the token out to the guest; refer to it only as "your saved list". Saving creates no account and never collects card details.

Input Schema

{
  "type": "object",
  "properties": {
    "listing": {
      "type": "string",
      "maxLength": 200,
      "description": "24-hex Guesty id or property slug"
    },
    "remove": {
      "description": "true to remove the property from the list",
      "type": "boolean"
    },
    "session_token": {
      "description": "the sessionToken from an earlier shortlist call; omit only for the first save in a conversation",
      "type": "string",
      "maxLength": 200
    }
  },
  "required": [
    "listing"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "sessionToken": {
      "type": "string"
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "listingId": {
            "type": "string"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "markdownUrl": {
            "type": "string"
          }
        },
        "required": [
          "listingId",
          "title",
          "markdownUrl"
        ],
        "additionalProperties": false
      }
    },
    "note": {
      "type": "string"
    }
  },
  "required": [
    "sessionToken",
    "items",
    "note"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_shortlist(session_token)

List every property saved in this conversation. Pass the sessionToken returned by shortlist_property; refer to it with the guest only as "your saved list".

Input Schema

{
  "type": "object",
  "properties": {
    "session_token": {
      "type": "string",
      "maxLength": 200,
      "description": "the sessionToken returned by shortlist_property"
    }
  },
  "required": [
    "session_token"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "sessionToken": {
      "type": "string"
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "listingId": {
            "type": "string"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "markdownUrl": {
            "type": "string"
          }
        },
        "required": [
          "listingId",
          "title",
          "markdownUrl"
        ],
        "additionalProperties": false
      }
    },
    "note": {
      "type": "string"
    }
  },
  "required": [
    "sessionToken",
    "items",
    "note"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_policies

Canonical Stay Portland policies: fees, cancellation, pets, check-in, taxes, parking, house rules.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "markdown": {
      "type": "string"
    }
  },
  "required": [
    "markdown"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded14 tools
verifiedversion not recorded14 tools
verifiedversion not recorded11 tools