# Apaleo — how to use (mcp.ai)

Apaleo is a cloud-based property management platform handling reservations, billing, and daily operations for hospitality businesses

## Option A — via MCP (recommended)
Remote MCP endpoint (HTTP, streamable): `https://api.mcp.ai/p_apaleo?ms=1781542440000`
Add it as a custom/remote MCP connector in your client (Claude, Cursor, VS Code…), then authenticate when prompted. Once connected, ask the agent to use the server's tools (e.g. `apaleo_archive_a_property`).

## Option B — via direct REST API
Base URL: `https://api.mcp.ai/api/apaleo`
Auth: `Authorization: Bearer sk_live_…` — create a workspace API key at https://mcp.ai/settings/api-keys
Discover endpoints: `GET https://api.mcp.ai/api/apaleo/_endpoints`

### Endpoints
- `POST https://api.mcp.ai/api/apaleo/archive/a/property` — Use this endpoint to archive an existing live property this operation set the isarchived flag to true<br>you must have at least one of these scopes: 'properties.manage, setup.manage'.
  - body: { id: string }
- `POST https://api.mcp.ai/api/apaleo/check/if/a/property/exists` — Check if a property exists by id.<br>you need to be authorized (no particular scope required)
  - body: { id: string }
- `POST https://api.mcp.ai/api/apaleo/check/if/a/unit/attribute/exists` — Check if a unit attribute exists<br>you must have at least one of these scopes: 'unitattributes.read, setup.read, setup.manage'.
  - body: { id: string }
- `POST https://api.mcp.ai/api/apaleo/check/if/a/unit/exists` — Check if a unit exists by id.<br>you must have at least one of these scopes: 'units.read, setup.read, setup.manage'.
  - body: { id: string }
- `POST https://api.mcp.ai/api/apaleo/check/if/a/unit/group/exists` — Check if a unit group exists by id.<br>you must have at least one of these scopes: 'unitgroups.read, setup.read, setup.manage'.
  - body: { id: string }
- `POST https://api.mcp.ai/api/apaleo/clones/a/property` — Use this call to clone a specific property. this operation creates a new property with inventory and rate plans from the specified property.<br>you must have at least one of these scopes: 'properties.
  - body: { id: string, code: string, name: object, taxId: string, timeZone: string, companyName: string, description?: object, currencyCode: string, paymentTerms: object, location__city?: string, bankAccount__bic?: string, bankAccount__bank?: string, bankAccount__iban?: string, managingDirectors?: string, defaultCheckInTime: string, defaultCheckOutTime: string, location__postalCode?: string, location__regionCode?: string, location__countryCode?: string, location__addressLine1?: string, location__addressLine2?: string, commercialRegisterEntry: string }
- `POST https://api.mcp.ai/api/apaleo/create/a/unit` — Use this call to create a new unit.<br>you must have at least one of these scopes: 'units.create, setup.manage'.
  - body: { name: string, condition?: string, attributes?: object[], maxPersons: integer, propertyId: string, description: object, unitGroupId?: string, connectedUnits?: object[] }
- `POST https://api.mcp.ai/api/apaleo/create/a/unit/attribute` — Use this call to create a new unit attribute.<br>you must have at least one of these scopes: 'unitattributes.create, setup.manage'.
  - body: { name: string, description?: string }
- `POST https://api.mcp.ai/api/apaleo/create/a/unit/group` — Use this call to create a new unit group.<br>you must have at least one of these scopes: 'unitgroups.create, setup.manage'.
  - body: { code: string, name: object, rank?: integer, type?: string, maxPersons: integer, propertyId: string, description: object, connectedUnitGroups?: object[] }
- `POST https://api.mcp.ai/api/apaleo/create/multiple/units` — Use this call to create multiple units, following a naming rule.<br>you must have at least one of these scopes: 'units.create, setup.manage'.
  - body: { units: object[] }
- `POST https://api.mcp.ai/api/apaleo/creates/a/property` — Use this call to create a new property.<br>you must have at least one of these scopes: 'properties.create, setup.manage'.
  - body: { code: string, name: object, taxId: string, timeZone: string, companyName: string, description?: object, currencyCode: string, paymentTerms: object, location__city?: string, bankAccount__bic?: string, bankAccount__bank?: string, bankAccount__iban?: string, managingDirectors?: string, defaultCheckInTime: string, defaultCheckOutTime: string, location__postalCode?: string, location__regionCode?: string, location__countryCode?: string, location__addressLine1?: string, location__addressLine2?: string, commercialRegisterEntry: string }
- `POST https://api.mcp.ai/api/apaleo/delete/a/unit` — Use this call to delete a unit.<br>you must have at least one of these scopes: 'units.delete, setup.manage'.
  - body: { id: string }
- `POST https://api.mcp.ai/api/apaleo/delete/a/unit/group` — Use this call to delete a unit group.<br>you must have at least one of these scopes: 'unitgroups.delete, setup.manage'.
  - body: { id: string }
- `POST https://api.mcp.ai/api/apaleo/deletes/unit/attribute` — Deletes unit attribute<br>you must have at least one of these scopes: 'unitattributes.delete, setup.manage'.
  - body: { id: string }
- `POST https://api.mcp.ai/api/apaleo/get/a/properties/list` — Get the list of properties.<br>you need to be authorized (no particular scope required)
  - body: { expand?: string[], status?: string[], pageSize?: integer, pageNumber?: integer, countryCode?: string[], includeArchived?: boolean }
- `POST https://api.mcp.ai/api/apaleo/get/a/property` — Get a property by id.<br>you need to be authorized (no particular scope required)
  - body: { id: string, expand?: string[], languages?: string[] }
- `POST https://api.mcp.ai/api/apaleo/get/a/unit` — Get a unit by id.<br>you must have at least one of these scopes: 'units.read, setup.read, setup.manage'.
  - body: { id: string, expand?: string[], languages?: string[] }
- `POST https://api.mcp.ai/api/apaleo/get/a/unit/group` — Get a unit group by id.<br>you must have at least one of these scopes: 'unitgroups.read, setup.read, setup.manage'.
  - body: { id: string, expand?: string[], languages?: string[] }
- `POST https://api.mcp.ai/api/apaleo/get/a/units/list` — Get the list of units.<br>you must have at least one of these scopes: 'units.read, setup.read, setup.manage'.
  - body: { expand?: string[], pageSize?: integer, condition?: string, isOccupied?: boolean, pageNumber?: integer, propertyId?: string, textSearch?: string, unitGroupId?: string, unitGroupIds?: string[], maintenanceType?: string, unitAttributeIds?: string[] }
- `POST https://api.mcp.ai/api/apaleo/get/unit/attribute/by/id` — Get unit attribute by id<br>you must have at least one of these scopes: 'unitattributes.read, setup.read, setup.manage'.
  - body: { id: string }
- `POST https://api.mcp.ai/api/apaleo/get/unit/attribute/list` — Get unit attribute list<br>you must have at least one of these scopes: 'unitattributes.read, setup.read, setup.manage'.
  - body: { pageSize?: integer, pageNumber?: integer }
- `POST https://api.mcp.ai/api/apaleo/list/unit/groups` — Get the list of unit groups.<br>you must have at least one of these scopes: 'unitgroups.read, setup.read, setup.manage'.
  - body: { expand?: string[], pageSize?: integer, pageNumber?: integer, propertyId?: string, unitGroupTypes?: string[] }
- `POST https://api.mcp.ai/api/apaleo/move/property/to/live` — Use this endpoint to move an existing test property to live this operation changes the property status to 'live'<br>you must have at least one of these scopes: 'properties.manage, setup.manage'.
  - body: { id: string }
- `POST https://api.mcp.ai/api/apaleo/replace/a/unit/group` — Use this call to modify a unit group.<br>you must have at least one of these scopes: 'unitgroups.manage, setup.manage'.
  - body: { id: string, name: object, rank?: integer, maxPersons?: integer, description: object, connectedUnitGroups?: object[] }
- `POST https://api.mcp.ai/api/apaleo/reset/property/data` — This endpoint deletes transactional data for a property in 'test' status. requires 'properties.manage' or 'setup.manage' scopes.
  - body: { id: string }
- `POST https://api.mcp.ai/api/apaleo/return/total/count/of/properties` — Return total count of properties<br>you need to be authorized (no particular scope required)
- `POST https://api.mcp.ai/api/apaleo/returns/a/list/of/supported/countries` — Returns a list of iso country codes that could be used to create properties.<br>you need to be authorized (no particular scope required)
- `POST https://api.mcp.ai/api/apaleo/returns/number/of/unit/groups` — Returns number of unit groups matching the filter criteria<br>you must have at least one of these scopes: 'unitgroups.read, setup.read, setup.manage'.
  - body: { propertyId?: string, unitGroupTypes?: string[] }
- `POST https://api.mcp.ai/api/apaleo/returns/number/of/units` — Returns number of units matching the filter criteria<br>you must have at least one of these scopes: 'units.read, setup.read, setup.manage'.
  - body: { condition?: string, isOccupied?: boolean, propertyId?: string, textSearch?: string, unitGroupId?: string, unitGroupIds?: string[], maintenanceType?: string, unitAttributeIds?: string[] }

## More
- Page: https://mcp.ai/apaleo
- Agent spec (llms.txt): https://mcp.ai/apaleo/llms.txt
- Postman collection: https://mcp.ai/apaleo/postman.json
