Real estate
Idealista
Your listings and leads on Idealista, managed by an agent.
14 endpoints
Bookings, calendars, rates, guest messages and tasks for your Avantio account. Use it in ChatGPT, Claude or any AI agent over MCP, or in n8n, Make and scripts over REST.
13 tools Read and write
Avantio has official APIs and no MCP server (checked 31 Oct 2026). The APIs are a closed model with documentation on request. Cotlet runs 13 Avantio tools hosted, over MCP for agents and REST for scripts, in your own Avantio login.
| What you need | Avantio API | By hand | Cotlet |
|---|---|---|---|
| Read bookings and balances | On request, built by a developer | Screen by screen | Yes, as data |
| Change rates and minimum stay | Pricing sync, on request | Revenue Calendar, by hand | Yes, after your OK |
| Answer Unified Inbox messages | Guest communications, on request | One by one | Yes, after your OK |
| Create and read tasks | Not listed | One by one | Yes, after your OK |
| Your own agent, on a schedule | A server you build | No | Hosted, any MCP client |
| What your account needs | A call with Avantio | An Avantio login | An Avantio login |
Checked 31 Oct 2026. Sources: Avantio: API integrations · Avantio blog: Avantio API integrations · Avantio: Integrations Marketplace · Avantio: Pricing (Europe)
Use your own account in its Cotlet Cloud Browser.
Connect your agent or create a Cotlet API key.
Ask your agent or send an HTTP request.
We never keep your Avantio password, and no rate, minimum stay, task or guest message goes out until you approve it. Who can see your session
Use MCP with your AI agent, or HTTP requests in n8n, Make, Zapier and scripts. Follow the MCP setup below or jump to the REST guide.
Turn on Avantio for agents. Create a Cotlet account, sign in to Avantio in its Cloud Browser and press Enable for agents.
Add the Cotlet address. Put https://cotlet.dev/mcp/v1 in the MCP server or connector field of your agent.
Log in to Cotlet or use a key. Chat apps open a Cotlet sign-in. Code editors, n8n and scripts take an API key from the console.
Avantio shares https://cotlet.dev/mcp/v1 with every other app on your Cotlet account. Turned Avantio on after you connected? Refresh the connector and the 13 tools appear.
Settings > Connectors > Add custom connector
URL: https://cotlet.dev/mcp/v1/connect
Claude Code:
claude mcp add --transport http cotlet-avantio \
https://cotlet.dev/mcp/v1 \
--header "Authorization: Bearer $COTLET_API_KEY" Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth // ~/.cursor/mcp.json
{
"mcpServers": {
"cotlet-avantio": {
"url": "https://cotlet.dev/mcp/v1",
"headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
}
}
} # ~/.codex/config.toml
[mcp_servers.cotlet-avantio]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY" MCP Client Tool (inside an AI Agent)
Transport: HTTP Streamable
URL: https://cotlet.dev/mcp/v1
Auth: Bearer, <your key>
Tool: avantio_read Make: MCP Client > Call a tool
Zapier: MCP Client by Zapier > Run Tool
Server URL: https://cotlet.dev/mcp/v1
Token: <your key>
Tool: avantio_write Create a Cotlet API key with access to Avantio and its read operations. Store it as COTLET_API_KEY in your environment or automation platform's credential store.
Connect Avantio in Cotlet and enable it for agents. Account access: Your own Avantio control panel login (a user with access to the Bookings, Calendar, Unified Inbox and Operations modules you want to work on).
curl "https://cotlet.dev/api/v1/avantio/bookings?check_in_from=2026-11-03&check_in_to=2026-11-09" \
-H "Authorization: Bearer $COTLET_API_KEY" A successful REST call puts the tool output in result. This illustrative response excerpt omits call IDs, messages and credit details.
{
"status": "success",
"app": "avantio",
"tool": "list_bookings",
"result": {
"bookings": [
{
"booking_id": "b-7001",
"accommodation": "Casa del Sol",
"guest": "Elena",
"check_in": "2026-11-03",
"nights": 3,
"payment": "Paid",
"portal": "Airbnb"
},
{
"booking_id": "b-7002",
"accommodation": "Pine Chalets",
"guest": "Marcus",
"check_in": "2026-11-05",
"nights": 5,
"payment": "Pending",
"portal": "Booking.com"
}
]
}
} Returns each booking with its number, accommodation, guest first name, dates, nights, payment status and source portal. Guest contact details come only from get_booking.
Any Avantio user who can open the Bookings module can call it, and sees only the accommodations that user may open.
Replace the dates with your own range; leave accommodation empty to read all accommodations.
Keep the same filters when continuing a list. Compare changed record values as well as identifiers when refreshing your destination.
| Tool | Connect through | Example workflow |
|---|---|---|
| n8n | HTTP Request | Read the open conversations of the Unified Inbox for your morning briefing. Use list_conversations in your configured business report. |
| Make | HTTP > Make a request | Read the rates and minimum stays of one accommodation for a date range. Use get_rates_and_rules in your configured business report. |
| Python or Node.js | REST API | List the tasks of the Operations Management Tool for a date range. Use list_tasks in your configured business report. |
Send Authorization: Bearer <your Cotlet API key> in request headers. You configure the schedule, destination and record comparisons.
Cotlet reads Avantio; your workflow steps write to your chosen destination. These HTTP workflows do not require a native Cotlet connector or a prebuilt template.
Python and Node.js can use the same HTTP requests without an AI agent. Keep access keys in credentials, outside shared workflow exports.
The API and MCP reference lists operations and inputs. The REST API guide explains authentication, errors and approvals.
The Bookings module. get_booking shows guest contact and payments; list_bookings keeps to names and dates.
Returns each accommodation with its ID, name and city. Use the ID in the other tools. You see only the accommodations your Avantio user can open.
MCP callavantio_read → list_accommodations
REST endpointGET https://cotlet.dev/api/v1/avantio/accommodations
| Name | Type | Description |
|---|---|---|
| limit integer | integer | Maximum accommodations to return. |
{
"accommodations": [
{
"accommodation": "acc-1001",
"name": "Casa del Sol",
"city": "Valencia"
},
{
"accommodation": "acc-1002",
"name": "Pine Chalets",
"city": "Girona"
}
]
} Returns each booking with its number, accommodation, guest first name, dates, nights, payment status and source portal, ordered by check-in date. Guest contact details come only from get_booking.
MCP callavantio_read → list_bookings
REST endpointGET https://cotlet.dev/api/v1/avantio/bookings
| Name | Type | Description |
|---|---|---|
| check_in_from string | string | Earliest check-in date, YYYY-MM-DD. |
| check_in_to string | string | Latest check-in date, YYYY-MM-DD. |
| accommodation string | string | Accommodation ID from list_accommodations. Leave empty for all. |
{
"bookings": [
{
"booking_id": "b-7001",
"accommodation": "Casa del Sol",
"guest": "Elena",
"check_in": "2026-11-03",
"nights": 3,
"payment": "Paid",
"portal": "Airbnb"
},
{
"booking_id": "b-7002",
"accommodation": "Pine Chalets",
"guest": "Marcus",
"check_in": "2026-11-05",
"nights": 5,
"payment": "Pending",
"portal": "Booking.com"
}
]
} Returns dates, guest name and contact, number of guests, the price, the payments recorded and the notes on the booking. It shows the same information as the booking page in the Bookings module.
MCP callavantio_read → get_booking
REST endpointGET https://cotlet.dev/api/v1/avantio/bookings/{booking_id}
| Name | Type | Description |
|---|---|---|
| booking_id string required | string | Booking ID from list_bookings. |
{
"booking_id": "booking_8c41d2"
} {
"booking_id": "b-7002",
"accommodation": "Pine Chalets",
"guest": "Marcus",
"email": "marcus@example.com",
"guests": 2,
"check_in": "2026-11-05",
"check_out": "2026-11-10",
"nights": 5,
"total": 640,
"paid": 320,
"currency": "EUR",
"notes": "Asks for late check-in"
} The Calendar and Revenue Calendar. A rate or minimum stay goes on to your portals, so each change asks first. list_rate_changes reads the record Avantio keeps.
Returns one entry per night in date order with its state and, for booked nights, the booking number. It reads the Calendar module and changes nothing.
MCP callavantio_read → get_calendar
REST endpointGET https://cotlet.dev/api/v1/avantio/calendar
| Name | Type | Description |
|---|---|---|
| accommodation string required | string | Accommodation ID from list_accommodations. |
| from string required | string | First date, YYYY-MM-DD. |
| to string required | string | Last date, YYYY-MM-DD. |
{
"accommodation": "accommodation",
"from": "from",
"to": "to"
} {
"accommodation": "acc-1001",
"nights": [
{
"date": "2026-12-20",
"state": "open"
},
{
"date": "2026-12-21",
"state": "booked",
"booking_id": "b-7010"
},
{
"date": "2026-12-22",
"state": "booked",
"booking_id": "b-7010"
},
{
"date": "2026-12-23",
"state": "open"
}
]
} Returns one entry per night with its rate and minimum stay, plus the occupancy percentage and the average daily rate (ADR) for the period. It reads the Revenue Calendar and changes nothing. Read it before update_rates to keep the old values.
MCP callavantio_read → get_rates_and_rules
REST endpointGET https://cotlet.dev/api/v1/avantio/rates-and-rules
| Name | Type | Description |
|---|---|---|
| accommodation string required | string | Accommodation ID from list_accommodations. |
| from string required | string | First date, YYYY-MM-DD. |
| to string required | string | Last date, YYYY-MM-DD. |
{
"accommodation": "accommodation",
"from": "from",
"to": "to"
} {
"accommodation": "acc-1001",
"occupancy_percent": 50,
"adr": 140,
"nights": [
{
"date": "2026-12-20",
"rate": 140,
"min_stay": 2
},
{
"date": "2026-12-21",
"rate": 140,
"min_stay": 2
},
{
"date": "2026-12-22",
"rate": 140,
"min_stay": 3
},
{
"date": "2026-12-23",
"rate": 140,
"min_stay": 3
}
]
} Returns each change with the time, the user who made it and the dates it covered, newest first. It is the record the Revenue Calendar keeps, so changes made by this integration show up in it too.
MCP callavantio_read → list_rate_changes
REST endpointGET https://cotlet.dev/api/v1/avantio/rate-changes
| Name | Type | Description |
|---|---|---|
| accommodation string required | string | Accommodation ID from list_accommodations. |
| limit integer | integer | Maximum changes to return. |
{
"accommodation": "accommodation"
} {
"changes": [
{
"at": "2026-10-30T14:05:00Z",
"user": "maya@example.com",
"from": "2026-12-20",
"to": "2026-12-31",
"summary": "Rate set to 161"
}
]
} Replaces the rate for the nights in the range through the Revenue Calendar, and Avantio passes it on to the connected portals. It changes what new guests pay, so you confirm it. Read the range with get_rates_and_rules first, and check list_rate_changes afterwards. By default you confirm each call; you can switch that off for this tool.
MCP callavantio_write → update_rates
REST endpointPATCH https://cotlet.dev/api/v1/avantio/rates
| Name | Type | Description |
|---|---|---|
| accommodation string required | string | Accommodation ID from list_accommodations. |
| from string required | string | First date, YYYY-MM-DD. |
| to string required | string | Last date, YYYY-MM-DD. |
| nightly_rate number required | number | Rate per night in the currency of the accommodation. |
{
"accommodation": "accommodation",
"from": "from",
"to": "to",
"nightly_rate": 1
} {
"accommodation": "acc-1001",
"from": "2026-12-20",
"to": "2026-12-31",
"nightly_rate": 161,
"currency": "EUR"
} Replaces the minimum stay for the nights in the range through the Revenue Calendar, and Avantio passes it on to the connected portals. It changes which bookings guests can make, so you confirm it. Run it again with the old value to undo it. By default you confirm each call; you can switch that off for this tool.
MCP callavantio_write → update_minimum_stay
REST endpointPATCH https://cotlet.dev/api/v1/avantio/minimum-stay
| Name | Type | Description |
|---|---|---|
| accommodation string required | string | Accommodation ID from list_accommodations. |
| from string required | string | First date, YYYY-MM-DD. |
| to string required | string | Last date, YYYY-MM-DD. |
| min_stay integer required | integer | Minimum number of nights. |
{
"accommodation": "accommodation",
"from": "from",
"to": "to",
"min_stay": 1
} {
"accommodation": "acc-1001",
"from": "2026-12-23",
"to": "2026-12-23",
"min_stay": 1
} Conversations from Airbnb, Booking.com, Vrbo, WhatsApp and SMS, as far as your inbox has them. A reply reaches the guest, so it asks first.
Returns each conversation with the guest first name, accommodation, booking, channel, last message time and a preview, newest first. It does not mark anything as read.
MCP callavantio_read → list_conversations
REST endpointGET https://cotlet.dev/api/v1/avantio/conversations
| Name | Type | Description |
|---|---|---|
| booking_id string | string | Booking ID from list_bookings. Leave empty for all conversations. |
| unanswered boolean | boolean | Only conversations whose last message came from the guest. |
{
"conversations": [
{
"conversation_id": "c-301",
"guest": "Elena",
"accommodation": "Casa del Sol",
"booking_id": "b-7001",
"channel": "Airbnb",
"last_message_at": "2026-10-30T18:40:00Z",
"preview": "What time can we check in?"
}
]
} Returns sender, time and text of each message, including automated messages Avantio sent. Reading does not send or change anything.
MCP callavantio_read → list_messages
REST endpointGET https://cotlet.dev/api/v1/avantio/conversations/{conversation_id}/messages
| Name | Type | Description |
|---|---|---|
| conversation_id string required | string | Conversation ID from list_conversations. |
{
"conversation_id": "conversation_8c41d2"
} {
"messages": [
{
"from": "host",
"at": "2026-10-29T09:00:00Z",
"text": "Welcome, Elena. Your stay starts on 3 November."
},
{
"from": "guest",
"at": "2026-10-30T18:40:00Z",
"text": "What time can we check in?"
}
]
} Sends the message through the Unified Inbox, which delivers it on the channel of the conversation. The guest receives it, so it cannot be recalled. By default you confirm each call; you can switch that off for this tool.
MCP callavantio_write → send_message
REST endpointPOST https://cotlet.dev/api/v1/avantio/conversations/{conversation_id}/messages
| Name | Type | Description |
|---|---|---|
| conversation_id string required | string | Conversation ID from list_conversations. |
| text string required | string | Message text. |
{
"conversation_id": "c-301",
"text": "Hi Elena, check-in starts at 3 pm. Happy to arrange earlier if Casa del Sol is free."
} {
"conversation_id": "c-301",
"status": "sent",
"sent_at": "2026-10-31T08:15:00Z"
} The Operations Management Tool. A new task is assigned to a team member or service provider, so it asks first.
Returns each task with its title, accommodation or booking, assignee, date, time, priority and status. It reads the task list and changes nothing.
MCP callavantio_read → list_tasks
REST endpointGET https://cotlet.dev/api/v1/avantio/tasks
| Name | Type | Description |
|---|---|---|
| status string | string | Task status as Avantio shows it. Leave empty for all. |
| from string | string | Earliest task date, YYYY-MM-DD. |
| to string | string | Latest task date, YYYY-MM-DD. |
| accommodation string | string | Accommodation ID from list_accommodations. Leave empty for all. |
{
"tasks": [
{
"task_id": "t-410",
"title": "Cleaning after check-out",
"accommodation": "Casa del Sol",
"assignee": "Cleaning team",
"date": "2026-11-06",
"priority": "High",
"status": "Open"
}
]
} Creates the task and assigns it, so the assignee sees it in Avantio. A task is not undone by a call of this integration, so you confirm it; you edit it in the Operations module. By default you confirm each call; you can switch that off for this tool.
MCP callavantio_write → create_task
REST endpointPOST https://cotlet.dev/api/v1/avantio/tasks
| Name | Type | Description |
|---|---|---|
| title string required | string | Task title. |
| accommodation string | string | Accommodation ID from list_accommodations. |
| booking_id string | string | Booking ID from list_bookings, to link the task to a booking. |
| assignee string | string | Team member or service provider, as named in Avantio. |
| date string | string | Task date, YYYY-MM-DD. |
| description string | string | Written briefing for the assignee. |
{
"title": "title"
} {
"task_id": "t-411",
"title": "Cleaning after check-out",
"accommodation": "Casa del Sol",
"assignee": "Cleaning team",
"date": "2026-11-06",
"status": "Open"
} Your signed-in Avantio profile, AES-256-GCM, in Finland. Never the password.
The 13 Avantio tools. No cookie and no password.
What that Avantio user may open: bookings, guest contacts, rates, inbox and tasks.
Payments, invoices, owner statements, users and channel settings.
You approve it yourself. We never enter a code for you.
Disable for agents, reset the browser, or remove that user in Avantio.
Our site scores A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results). We have no SOC 2 report or third-party pentest yet.
Avantio's public terms (avantio.com/terms-and-conditions) cover the website, and say nothing about bots, scraping or the software. The customer contract for the control panel is not published, so we cannot tell you what it says about automation (checked 31 Oct 2026). We found no public case of an Avantio account closed for automation. Read your own contract before you rely on an agent, and tell us if Avantio objects.
The safest setup is an Avantio user of its own for the agent, created by you with only the modules its tools need, so you can switch it off without touching your team.
A rate sent to Avantio goes on to your connected portals. Change a season in a few grouped calls, not one call per night.
Avantio keeps adding to its control panel, such as the Unified Inbox and the Operations Management Tool. When a screen moves, we repair the tool and your scheduled runs keep their prompts. status.cotlet.dev watches the site, console and API every 3 minutes.
| Action | Undo |
|---|---|
| Update rates | Send the saved old rate; bookings made meanwhile keep the new one |
| Update minimum stay | Run it again with the old value |
| Create a task | Not by a call here; edit it in the Operations module |
| Send a guest message | No, the message is out |
4 of 13 tools ask first: everything that reaches a portal, a guest or a team member. The 9 read tools run at once. You can switch the wait off per tool for a scheduled run.
The Revenue Calendar keeps a record of changes. Your own copy of the old values from get_rates_and_rules is still the quickest way back.
{
"name": "send_message",
"arguments": {
"conversation_id": "c-301",
"text": "Hi Elena, check-in starts at 3 pm. Happy to arrange earlier if Casa del Sol is free."
}
} curl -X POST https://cotlet.dev/api/v1/avantio/conversations/c-301/messages \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hi Elena, check-in starts at 3 pm. Happy to arrange earlier if Casa del Sol is free."}' {
"conversation_id": "c-301",
"status": "sent",
"sent_at": "2026-10-31T08:15:00Z"
} A weekly cron job calls the same tools over REST at /api/v1/avantio, with one key and one price. A failed call costs nothing. The tools table lists the REST path of each tool.
About $31 a monthfor a 30-property agency, 5,420 credits. Avantio bills your plan as before.
| Job | Calls | Credits |
|---|---|---|
| Arrivals and open payments, daily | 3 × 30 | 900 |
| Answer waiting guest messages, daily | 5 × 30 | 1,500 |
| Set seasonal rates, weekly | 4 × 4 | 160 |
| Fill orphan days, weekly | 4 × 4 | 160 |
| Turnover tasks for check-outs, daily | 4 × 30 | 1,200 |
| Cloud Browser, 30 days | 1,500 | |
| Total | 5,420 |
The agency is our example: 30 properties, about 3 to 4 arrivals a day. Avantio publishes no average account; its Europe price page shows €14 per property a month, with a €295 minimum under 20 properties (checked 31 Oct 2026). A season of rates is a few grouped calls, not one per night. Dollars at the $29 pack rate.
| Credits | Price, one time | Calls at 10 credits | Per 1,000 credits |
|---|---|---|---|
| 5,000 | $29 | 500 | $5.80 |
| 15,000 | $79 | 1,500 | $5.27 |
| 32,000 | $149 | 3,200 | $4.66 |
| 60,000 | $249 | 6,000 | $4.15 |
Only successful calls use credits; failed calls and timeouts cost nothing. At a balance of 0 calls pause, never a surprise charge. Authenticate with the Authorization: Bearer header.
| Option | What it does | Where it stops |
|---|---|---|
| Avantio API | Official PMS, Web and Accounting APIs. | Closed, documentation on request, a developer builds the integration. |
| laravel-avantio-api | A PHP package for the Avantio XML feeds and web services. | A library, not an MCP server. Needs API credentials, no license, 0 stars. |
| avantio-server | One company's data extraction through the Avantio API. | Needs API access, no license, 1 star, last change January 2025. |
| Marketplace partners | Pricing, task, check-in and payment tools that connect to Avantio. | One job each, not a general agent interface. |
| Zapier, n8n | Nothing: no Avantio app. | Zapier and n8n pages answer 404. |
Nobody else runs an Avantio MCP server, on GitHub or hosted. The official API needs a conversation with Avantio and a developer. A marketplace partner covers one job. Cotlet gives your agent bookings, rates, guest messages and tasks in one place, in the account you already pay for.
Take Group sp. z o.o. runs Cotlet, a software company registered in Poland, EU (VAT PL6342984273), working since 2019 and founded by Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Questions about the Avantio tools go to contact@cotlet.dev.
Sign up free at https://cotlet.dev, open Avantio under Integrations in the console and sign in to Avantio in its Cloud Browser. The trial starts with your first app and asks for no card.
Sign up at cotlet.dev, log in to Avantio once in its Cloud Browser and add Cotlet to ChatGPT or Claude, following the steps in your console. No API key is needed. ChatGPT and Claude then work in your Avantio account through Cotlet, in their phone apps too.
With Cotlet, ChatGPT, Claude and other AI agents handle jobs like these in Avantio: brief me on arrivals; reply to guest messages; fill orphan days. You ask in plain words, and anything that reaches other people waits for your OK first.
No. Cotlet works from your signed-in Avantio session, so you need only an Avantio login. Avantio's own APIs are a closed model with documentation on request (checked 31 Oct 2026).
A tool works only for modules your Avantio account has switched on and your user may open. Bookings and Calendar are enough for the read tools; messages need the Unified Inbox and tasks need the Operations Management Tool.
Better a user of its own. Create it in Avantio with only the modules the tools need, sign it in once in the Cloud Browser, and you can switch it off without touching your team.
No. None of the tools reaches Avantio Payments, invoices, owner statements, users or channel settings.
Only the way in. Both carry the same 13 tools, inputs and answers, with one API key and one price. Agents use MCP; scripts, cron jobs and HTTP steps use REST.
No. Cotlet is independent and not affiliated with Avantio or its parent company.
Yes. Call Cotlet's REST API from a script or an HTTP step in n8n, Make or Zapier with your Cotlet key. MCP is the alternative for AI agents; you do not need to connect an agent to use REST.
Free 7-day trial with 2,000 credits, no card needed.
May we use Google Analytics to see which pages help people? It sets cookies only if you accept. No ads, and we never sell data. Cookie policy