uploadStayPhoto
Upload a photo to one of your Stay's photo areas. Supply EXACTLY ONE of 'url' (a public https:// link, e.g. a Google Drive or Dropbox share link — the server downloads it) or 'base64' (the raw image bytes, base64-encoded — use this when you already have the image data in hand, e.g. a user attached a photo in the conversation, and have nowhere public to host it first). The photo is validated against the same minimum specs as a manual upload: JPEG, PNG, or WebP, under 20MB, and a minimum resolution that depends on area. Most areas require at least 1920x1080 landscape; 'host' requires at least 1080x1350 PORTRAIT — a landscape photo will be rejected for that area. Every upload is downscaled to fit within 2560x1440 and re-encoded server-side as WebP (stripping metadata and anything that isn't genuine image data) before storage. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | A public https:// URL the server can download the image from (e.g. a Google Drive or Dropbox share link). Supply this OR base64, not both. | |
| area | Yes | Which photo area this belongs to: - 'listing': general Stay gallery photos (multiple allowed, min 1920x1080 landscape) - 'main': the single hero/cover photo shown first for the Stay (min 1920x1080 landscape, replaces any existing main photo) - 'workspace': coworking/workspace photos for the whole Stay (multiple allowed, min 1920x1080 landscape) - 'host': a photo of the HOST/CONTACT PERSON, not the property — must be PORTRAIT orientation, min 1080x1350 (replaces any existing host photo) - 'room': photos for one specific room — requires roomId (multiple allowed, min 1920x1080 landscape) | |
| base64 | No | Base64-encoded JPEG, PNG, or WebP image bytes (a data:image/...;base64,... URI prefix is also accepted and stripped automatically). Supply this OR url, not both. Under ~27MB encoded (20MB image). | |
| roomId | No | Required when area is 'room' — the room's EntryID (use getMyStayRooms to find it). Ignored for other areas. | |
| stayId | Yes | The Stay's EntryID (use getMyStays to find it) |