Real estate
Idealista
Your listings and leads on Idealista, managed by an agent.
14 endpoints
Reservations, booking requests, calendars and guest messages for your Hostfully account. Use MCP with your AI agent or REST with HTTP workflows and scripts, without the Open API add-on.
11 tools Read and write
Hostfully has an official REST API, the Open API v3, and no official MCP server (checked 31 Oct 2026). It is a paid add-on: you email api@hostfully.com with your use case, test in a sandbox, and only then get production access. Cotlet runs 11 Hostfully tools hosted in your own login, over MCP for agents and REST for scripts.
| What you need | Open API add-on | GitHub server | Cotlet |
|---|---|---|---|
| Read reservations, calendars, messages | Yes | Yes, with an API key | Yes |
| Accept or decline requests, send messages, set rates | Yes | Yes, with an API key | Yes, guest-facing actions after your OK |
| How you get access | Email, sandbox work, then production | Same key | Your own Hostfully login |
| Extra cost on your Hostfully plan | Add-on, price not published | Same add-on | None, pay per call |
| Works in Claude or ChatGPT | You build it | You install and host it | Yes |
| Allowed by Hostfully's terms | Yes, official | Yes, official API | Uses the web app |
Checked 31 Oct 2026. Sources: Hostfully: Open API · Hostfully Help: FAQs about Hostfully APIs · Hostfully API v3 documentation · Hostfully pricing · Hostfully Terms of Service
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 Hostfully password, and no message reaches a guest 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.
Sign in to Hostfully in a Cloud Browser. Make a Cotlet account, open Hostfully in its Cloud Browser, log in with your usual Hostfully user and press Enable for agents.
Add the Cotlet address. Enter https://cotlet.dev/mcp/v1 where your agent takes an MCP server or a connector.
Finish the sign-in. Claude and ChatGPT open a Cotlet sign-in page. Cursor, Codex, n8n and scripts use an API key from the console.
One address, https://cotlet.dev/mcp/v1, serves Hostfully and the other apps you enable. Enabled Hostfully after you connected? Refresh the connector so the new tools load.
Settings > Connectors > Add custom connector
URL: https://cotlet.dev/mcp/v1/connect
Claude Code:
claude mcp add --transport http cotlet-hostfully \
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-hostfully": {
"url": "https://cotlet.dev/mcp/v1",
"headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
}
}
} # ~/.codex/config.toml
[mcp_servers.cotlet-hostfully]
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: hostfully_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: hostfully_write Create a Cotlet API key with access to Hostfully and its read operations. Store it as COTLET_API_KEY in your environment or automation platform's credential store.
Connect Hostfully in Cotlet and enable it for agents. Account access: Your own Hostfully account (an agency user with access to the properties you want the agent to work on).
curl "https://cotlet.dev/api/v1/hostfully/reservations?status=request&check_in_from=2026-11-01" \
-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": "hostfully",
"tool": "list_reservations",
"result": {
"reservations": [
{
"reservation_id": "r-5502",
"property": "Garden Cottage",
"guest": "Marcus",
"check_in": "2026-11-05",
"nights": 3,
"status": "request",
"channel": "Direct"
}
]
}
} Returns each reservation with guest first name, property, dates, nights, status and channel, ordered by check-in date. Guest contact details come only from get_reservation.
You see the properties your Hostfully user can open. Leave status empty to list every status.
Replace the dates with your own range. Hostfully's own Open API has a default limit of 1000 calls an hour; Cotlet works from your signed-in session instead.
When you refresh a destination, compare changed values such as status and dates as well as reservation_id: a request becomes a booking, and a stay can be moved.
| Tool | Connect through | Example workflow |
|---|---|---|
| n8n | HTTP Request | Post the guest threads waiting for a reply to Slack. Use list_message_threads with unanswered set to true on your own schedule. |
| Make | HTTP > Make a request | Check one property for open nights before a holiday. Use get_calendar for a date range and write the gaps to a sheet. |
| Python or Node.js | REST API | Build a morning list of arrivals. Use list_reservations with check_in_from and check_in_to and print it or send it by email. |
Send Authorization: Bearer <your Cotlet API key> in request headers. You configure the schedule, destination and record comparisons.
Cotlet reads Hostfully; 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.
You see the properties your Hostfully user can open. A rate change replaces the rate for the nights in the range.
Returns each property with its UID, name, city and whether it is a multi-unit property. Use the UID in the other tools. You see only the properties your Hostfully user can open.
MCP callhostfully_read → list_properties
REST endpointGET https://cotlet.dev/api/v1/hostfully/properties
| Name | Type | Description |
|---|---|---|
| limit integer | integer | Maximum properties to return. |
{
"properties": [
{
"property": "a1b2c3d4-0001",
"name": "Harbor View Loft",
"city": "Lisbon",
"multi_unit": false
},
{
"property": "a1b2c3d4-0002",
"name": "Garden Cottage",
"city": "Porto",
"multi_unit": false
}
]
} Returns one entry per night in date order with its state and rate. Blocks show their reason when Hostfully has one.
MCP callhostfully_read → get_calendar
REST endpointGET https://cotlet.dev/api/v1/hostfully/calendar
| Name | Type | Description |
|---|---|---|
| property string required | string | Property UID from list_properties. |
| from string required | string | First date, YYYY-MM-DD. |
| to string required | string | Last date, YYYY-MM-DD. |
{
"property": "property",
"from": "from",
"to": "to"
} {
"property": "a1b2c3d4-0001",
"nights": [
{
"date": "2026-12-20",
"state": "open",
"rate": 140
},
{
"date": "2026-12-21",
"state": "booked",
"rate": 140
},
{
"date": "2026-12-22",
"state": "blocked",
"rate": 140
}
]
} Replaces the rate for the nights in the range and syncs to the connected channels. It changes what new guests pay, so you confirm it. Read the range with get_calendar first. By default you confirm each call; you can switch that off for this tool.
MCP callhostfully_write → set_pricing_period
REST endpointPUT https://cotlet.dev/api/v1/hostfully/pricing-period
| Name | Type | Description |
|---|---|---|
| property string required | string | Property UID from list_properties. |
| 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 property currency. |
{
"property": "property",
"from": "from",
"to": "to",
"nightly_rate": 1
} {
"property": "a1b2c3d4-0001",
"from": "2026-12-20",
"to": "2026-12-31",
"nightly_rate": 161,
"currency": "EUR"
} Accept and decline work only on reservations with status request. Cancelling a booking applies the refund terms of that booking.
Returns each reservation with guest first name, property, dates, nights, status and source channel, ordered by check-in date. Guest contact details stay on the reservation page and come only from get_reservation.
MCP callhostfully_read → list_reservations
REST endpointGET https://cotlet.dev/api/v1/hostfully/reservations
| Name | Type | Description |
|---|---|---|
| status string | string | booking, request, inquiry or cancelled. Leave empty for all. |
| check_in_from string | string | Earliest check-in date, YYYY-MM-DD. |
| check_in_to string | string | Latest check-in date, YYYY-MM-DD. |
| property string | string | Property UID from list_properties. Leave empty for all. |
{
"reservations": [
{
"reservation_id": "r-5501",
"property": "Harbor View Loft",
"guest": "Elena",
"check_in": "2026-11-03",
"nights": 4,
"status": "booking",
"channel": "Airbnb"
},
{
"reservation_id": "r-5502",
"property": "Garden Cottage",
"guest": "Marcus",
"check_in": "2026-11-05",
"nights": 3,
"status": "request",
"channel": "Direct"
}
]
} Returns dates, number of guests, the price breakdown, status and the notes on the reservation. It reads the same page you open from the Booking Pipeline.
MCP callhostfully_read → get_reservation
REST endpointGET https://cotlet.dev/api/v1/hostfully/reservations/{reservation_id}
| Name | Type | Description |
|---|---|---|
| reservation_id string required | string | Reservation ID from list_reservations. |
{
"reservation_id": "reservation_8c41d2"
} {
"reservation_id": "r-5502",
"property": "Garden Cottage",
"guest": "Marcus",
"guests": 2,
"check_in": "2026-11-05",
"check_out": "2026-11-08",
"nights": 3,
"status": "request",
"total": 480,
"currency": "EUR",
"notes": "Asks for late check-in"
} Turns the request into a booking and blocks the nights in the calendar. The guest is notified by Hostfully. It works only on reservations with status request. By default you confirm each call; you can switch that off for this tool.
MCP callhostfully_write → accept_booking_request
REST endpointPOST https://cotlet.dev/api/v1/hostfully/reservations/{reservation_id}/booking-request/accept
| Name | Type | Description |
|---|---|---|
| reservation_id string required | string | Reservation ID from list_reservations. |
{
"reservation_id": "reservation_8c41d2"
} {
"reservation_id": "r-5502",
"status": "booking"
} Closes the request and frees the nights. The guest is notified by Hostfully. It works only on reservations with status request. By default you confirm each call; you can switch that off for this tool.
MCP callhostfully_write → decline_booking_request
REST endpointPOST https://cotlet.dev/api/v1/hostfully/reservations/{reservation_id}/booking-request/decline
| Name | Type | Description |
|---|---|---|
| reservation_id string required | string | Reservation ID from list_reservations. |
{
"reservation_id": "reservation_8c41d2"
} {
"reservation_id": "r-5503",
"status": "declined"
} Cancels the booking and frees the nights. The guest is notified and refund terms of the booking apply, so check them first. By default you confirm each call; you can switch that off for this tool.
MCP callhostfully_write → cancel_booking
REST endpointPOST https://cotlet.dev/api/v1/hostfully/reservations/{reservation_id}/booking/cancel
| Name | Type | Description |
|---|---|---|
| reservation_id string required | string | Reservation ID from list_reservations. |
{
"reservation_id": "reservation_8c41d2"
} {
"reservation_id": "r-5501",
"status": "cancelled"
} Threads come from the Unified Inbox, newest first. Reading marks nothing as read; a sent message reaches the guest on the channel of the booking.
Returns each thread with the guest first name, property, reservation, last message time and a preview, newest first. It does not mark anything as read.
MCP callhostfully_read → list_message_threads
REST endpointGET https://cotlet.dev/api/v1/hostfully/message-threads
| Name | Type | Description |
|---|---|---|
| unanswered boolean | boolean | Only threads whose last message came from the guest. |
{
"threads": [
{
"thread_id": "t-301",
"guest": "Elena",
"property": "Harbor View Loft",
"reservation_id": "r-5501",
"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 Hostfully sent. Reading does not send or change anything.
MCP callhostfully_read → list_messages
REST endpointGET https://cotlet.dev/api/v1/hostfully/threads/{thread_id}/messages
| Name | Type | Description |
|---|---|---|
| thread_id string required | string | Thread ID from list_message_threads. |
{
"thread_id": "thread_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 Hostfully, which delivers it on the channel of the booking. The guest receives it, so it cannot be recalled. By default you confirm each call; you can switch that off for this tool.
MCP callhostfully_write → send_message
REST endpointPOST https://cotlet.dev/api/v1/hostfully/threads/{thread_id}/messages
| Name | Type | Description |
|---|---|---|
| thread_id string required | string | Thread ID from list_message_threads. |
| text string required | string | Message text. |
{
"thread_id": "t-301",
"text": "Hi Elena, check-in starts at 3 pm. Happy to arrange earlier if the loft is free."
} {
"thread_id": "t-301",
"status": "sent",
"sent_at": "2026-10-31T08:15:00Z"
} Your signed-in Hostfully profile, AES-256-GCM, in Finland. Not your password.
The 11 Hostfully tools. No cookie, no API key.
The properties, reservations and messages your Hostfully role opens.
Billing, payouts, owners, users and channel connections.
Your agent gets a link and you log in again. We never log in for you.
Disable Hostfully for agents, reset the browser or delete the API key.
Our site scores A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results); no SOC 2 report or third-party pentest yet.
"You may use the Service only for your business purposes and shall not: ... (iv) interfere with or disrupt the integrity or performance of the Service or the data contained therein; or (v) attempt to gain unauthorized access to the Service or its related systems or networks."
The same section bars spam and duplicative or unsolicited messages, and says you are responsible for all activity under your user account. No clause names bots, scraping or AI agents. We found no public case of a Hostfully account closed for automation, and no separate API terms (checked 31 Oct 2026). Hostfully may end an account that breaches the agreement.
Do not use an agent to send the same message to many guests; the terms bar duplicative messages. Keep replies tied to one guest and one reservation.
If Hostfully moves a screen or renames a field in the Booking Pipeline or the Unified Inbox, we change the tool and the same prompt keeps working. status.cotlet.dev watches the site, console and API every 3 minutes.
| Action | Undo |
|---|---|
| Send a guest message | No; the guest has it |
| Accept or decline a request | Not through Cotlet; use the booking in Hostfully |
| Cancel a booking | Not through Cotlet; the guest is notified |
| Set a pricing period | Yes, set the old rate; read it first with get_calendar |
| Every read | Nothing to undo; reads change nothing |
5 of 11 tools ask first: every write, because each one reaches a guest or changes what guests pay. Turn the wait off per tool for a scheduled run you trust.
Check the nights in the calendar before you approve a rate change: it replaces the rate for the whole range.
{
"name": "send_message",
"arguments": {
"thread_id": "t-301",
"text": "Hi Elena, check-in starts at 3 pm. Happy to arrange earlier if the loft is free."
}
} curl -X POST https://cotlet.dev/api/v1/hostfully/threads/t-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 the loft is free."}' {
"thread_id": "t-301",
"status": "sent",
"sent_at": "2026-10-31T08:15:00Z"
} Scripts and cron jobs reach the same tools over REST at /api/v1/hostfully, with one key and one price. A write waits for your approval and answers 202 with status pending until you decide. The tools table lists the REST path of each tool.
About $22 a monthfor a host with 3 properties, 3,790 credits. Your Hostfully plan stays as it is.
| Job | Calls | Credits |
|---|---|---|
| Open booking requests, daily | 2 × 30 | 600 |
| Unanswered guest threads and replies, daily | 3 × 30 | 900 |
| Arrivals in the next 3 days, daily | 2 × 30 | 600 |
| Calendar gaps for 3 properties, weekly | 4 × 4 | 160 |
| One seasonal rate change, monthly | 3 × 1 | 30 |
| Cloud Browser, 30 days | 1,500 | |
| Total | 3,790 |
The month is our example: 3 properties on Growth, which Hostfully lists from $15 a property a month plus a platform fee (pricing page, 31 Oct 2026), with daily checks. The Open API add-on has no published price. 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 |
|---|---|---|
| th1-ai/hostfully-pp-cli | A generated Go CLI and MCP server for API v3.3 with a local SQLite mirror, Apache-2.0. | Needs the Open API key; 0 stars, last push 8 Jun 2026; you install and host it. |
| Hostfully Open API | The official REST API for properties, leads, messages, calendars and pricing. | Paid add-on enabled by email; raw endpoints, no agent connection; 1000 calls an hour by default. |
With the add-on and a developer, the API reaches everything on this page directly. Cotlet fits a host without the add-on or a developer: it works in your own Hostfully login and puts guest-facing actions behind your OK.
Cotlet belongs to Take Group sp. z o.o., a software company registered in Poland, EU (VAT PL6342984273) and trading since 2019. Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing) founded it. Write to contact@cotlet.dev with questions about the Hostfully tools.
Sign up free at https://cotlet.dev, open Hostfully under Integrations in the console and log in to Hostfully in its Cloud Browser. The trial starts with your first app and needs no card.
Sign up at cotlet.dev, log in to Hostfully 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 Hostfully account through Cotlet, in their phone apps too.
With Cotlet, ChatGPT, Claude and other AI agents handle jobs like these in Hostfully: answer booking requests; reply to guest messages; brief me on arrivals. You ask in plain words, and anything that reaches other people waits for your OK first.
No. Cotlet works from your signed-in Hostfully session, so you need only a Hostfully account. The Open API is a paid add-on that Hostfully enables after sandbox work (checked 31 Oct 2026).
Yes, inside the Open API: the docs have a Webhooks page. They need the same API access. Without it, run your agent on a schedule, for example a daily list_reservations.
Yes. Reservation and calendar tools take a property from list_properties, and you see the properties your Hostfully role opens. Ask the agent to loop over them.
Only the way in. Both carry the same 11 tools, inputs and answers, with one API key and one price. Agents use MCP; scripts and HTTP steps use REST.
No. Cotlet is independent and not affiliated with Hostfully Inc.
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