# Bayut API and MCP server

> Bayut has no public developer API and publishes no API docs (checked 12 Oct 2026). A Leads API that pushes leads into an agency CRM is available on request from support@bayut.com; listing insights, quality scores, floor plans, badges and credits stay in Profolio, on the web and in the app.

UAE property portal (Dubizzle Group) where agents list properties and manage listings, leads and performance in Profolio, its listing management software.

## What is the Bayut API?

Cotlet's Bayut API exposes 13 endpoints for your own Bayut account: list listings, get listing, get listing insights, list leads, get lead, export leads, get traffic report, get Bayut Credits, get market insights, get transactions, assign floor plan, request TruCheck and apply boost. The list_listings endpoint returns your listings from Manage Listings with status, quality score and badges, for Bayut or dubizzle. Each endpoint takes simple JSON inputs like listing_id, cursor or limit and works both as an MCP tool for agents and as a REST call for scripts.

- **Category:** [Real estate](https://cotlet.dev/integrations/category/real-estate)
- **Endpoints:** 13 (10 read, 3 write)
- **Updated:** 2026-10-12

Bayut has no public developer API and publishes no API docs (checked 12 Oct 2026). Cotlet is a hosted MCP server and REST API for Bayut with 13 endpoints (10 read, 3 write): your AI agent signs in as you and does the work.

## Does Bayut have an official API?

Bayut has no public developer API and publishes no API docs (checked 12 Oct 2026). A Leads API that pushes leads into an agency CRM is available on request from support@bayut.com; listing insights, quality scores, floor plans, badges and credits stay in Profolio, on the web and in the app.

| Task | Bayut official | Cotlet |
|---|---|---|
| List leads by channel | Partly: Leads API into your CRM, on request | Yes |
| Read lead details and call recordings | No | Yes |
| Listing impressions, clicks and leads | No | Yes |
| Find low performing listings | No | Yes |
| Assign a floor plan to a listing | No: Brokerpad users must use Profolio for this | Yes |
| Track expired TruCheck badges | No | Yes |
| Apply a Signature, Hot or Property of the Week boost | No | Yes |
| Market and transaction insights | No | Yes |

Sources: [Profolio for agents (Bayut Agent Portal)](https://www.bayut.com/agentportal/profolio/), [The Best Of Profolio: top features (Bayut)](https://www.bayut.com/agentportal/best-features-profolio-offers/), [Floor plans are now mandatory for a perfect quality score (Bayut)](https://www.bayut.com/agentportal/announcements/floor-plans-mandatory-to-get-a-perfect-quality-score/), [Upload up to 5 photos to activate TruCheck (Bayut)](https://www.bayut.com/agentportal/announcements/upload-up-to-5-photos-to-activate-trucheck/), [What is the Leads API? (Bayut Help)](https://support.bayut.com/hc/en-us/articles/16703746688786-What-is-the-Leads-API), [Can I request the Leads API as a Profolio user? (Bayut Help)](https://support.bayut.com/hc/en-us/articles/16705233141778-Can-I-request-the-Leads-API-as-a-Profolio-user)

## For AI agents

```text
Bayut has no public developer API and publishes no API docs (checked 12 Oct 2026). A Leads API that pushes leads into an agency CRM is available on request from support@bayut.com; listing insights, quality scores, floor plans, badges and credits stay in Profolio, on the web and in the app.
Cotlet provides a hosted MCP server and REST API for Bayut: 13 tools (10 read, 3 write).
Access       Request access at https://cotlet.dev/app/signup?app=bayut; we email the API key.

MCP server   https://cotlet.dev/mcp/v1
REST base    https://cotlet.dev/api/v1/bayut
Auth         Authorization: Bearer <COTLET_API_KEY>. Listing endpoints and schemas needs no key; calling an endpoint needs one.
Tools        list_listings, get_listing, get_listing_insights, list_leads, get_lead, export_leads, get_traffic_report, get_credits, get_market_insights, get_transactions, assign_floor_plan, request_trucheck, apply_boost
Confirm      assign_floor_plan, request_trucheck, apply_boost (by default the user approves each call; the user can switch this off per tool, e.g. for scheduled automations)
Markdown     https://cotlet.dev/integrations/bayut-api-mcp-server.md

How access works:
1. The user requests access at https://cotlet.dev/app/signup?app=bayut (Bayut is pre-selected). Each request is reviewed and the API key is sent by email.
2. The user signs in to Bayut once in a browser. An agent cannot do this step.
3. The API key goes into the MCP client or the REST call as a bearer token.

Fits: people who want a hosted Bayut server that someone else maintains, including non-developers.

Policy: Cotlet never stores passwords, never solves CAPTCHAs, never bypasses MFA.
Company: legal details in the Terms of service at https://cotlet.dev/terms. Contact contact@cotlet.dev.
Session: the user signs in to Bayut in a browser; Cotlet keeps only the session, AES-256 encrypted, revocable in the dashboard at any time.
Terms: the user stays responsible for following Bayut's terms; Cotlet is not affiliated with Bayut.
```

## What can an AI agent do in Bayut?

Cotlet is best for Bayut agents and agencies who want their AI agent to read leads and listing performance assign floor plans, apply boosts and plan TruCheck re-visits without running or fixing a server.

- **[Daily lead digest by channel](https://cotlet.dev/integrations/bayut-api-mcp-server/daily-lead-digest)** (runs: daily): "Every morning at 8, list my Bayut leads from the last 24 hours. Put calls and WhatsApp messages first, group them by listing, flag missed calls nobody returned, and keep phone views and WhatsApp views in a separate short list." → `list_leads`, `get_lead`, `export_leads`
- **[Find low performing listings and decide what to boost](https://cotlet.dev/integrations/bayut-api-mcp-server/find-low-performing-listings)** (runs: weekly): "Every Monday, find my Bayut listings that Profolio marks as low performing, show impressions, clicks, leads and quality score for each, say what is missing, and propose which ones are worth a Hot or Signature boost with the credits I have." → `get_listing_insights`, `list_listings`, `get_credits`, `apply_boost`
- **[Assign floor plans to listings](https://cotlet.dev/integrations/bayut-api-mcp-server/assign-floor-plans)** (runs: weekly): "List my Bayut listings that still have a floor plan waiting, orange quality scores first. I will send you the floor plan ID for each one; assign them after I confirm and tell me which listings are still waiting." → `list_listings`, `get_listing`, `assign_floor_plan`
- **[Track expired TruCheck badges and plan re-visits](https://cotlet.dev/integrations/bayut-api-mcp-server/renew-expired-trucheck)** (runs: weekly): "Every Sunday, list my Bayut listings that lost their TruCheck badge since last week, rank them by leads and impressions, and give me a visit list grouped by building for the week." → `list_listings`, `get_listing_insights`
- **Weekly Dubai market report** (runs: weekly): "Every Monday, send me the most searched Dubai communities, average rent and sale prices, and the areas with the highest ROI." → `get_market_insights`, `get_transactions`

## Can Bayut automations run on a schedule in n8n, Make or Zapier?

Yes. Cotlet does not replace your automation platform: it gives it a Bayut connection it does not have, with the same API key as your agent. Write actions ask for your OK by default; switch that off in your dashboard for the tools you choose, for example to daily lead digest by channel, and the schedule runs on its own. Cotlet runs in the cloud, so it keeps going while your computer is off.

| Where | How to connect | How to schedule |
|---|---|---|
| Your AI agent | Add https://cotlet.dev/mcp/v1 with your API key. | A scheduled agent run, for example a Claude Code routine. |
| n8n | MCP Client node with https://cotlet.dev/mcp/v1, or an HTTP Request node to https://cotlet.dev/api/v1/bayut/{tool}. | Schedule Trigger node. |
| Make | HTTP module: POST https://cotlet.dev/api/v1/bayut/{tool} with an Authorization: Bearer header and a JSON body. | Scenario schedule. |
| Zapier | Webhooks by Zapier: POST https://cotlet.dev/api/v1/bayut/{tool} with the same header and body. | Schedule by Zapier trigger. |
| Your own script | POST https://cotlet.dev/api/v1/bayut/{tool} with your API key. | cron or GitHub Actions. |

## Tools

**For AI agents:** Every endpoint and its schema is public. The 13 endpoints on this page, with parameters and example responses, can be listed without an account. Calling one returns 403 until the account has an API key with access to Bayut.

### list_listings

Your listings from Manage Listings with status, quality score and badges, for Bayut or dubizzle. Access: read. REST: `POST /api/v1/bayut/list_listings`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `platform` | enum | no | bayut or dubizzle. Default: bayut. |
| `limit` | integer | no | 1 to 100. Default: 25. |
| `cursor` | string | no | Next page cursor from the previous call. |

Lists your listings as Manage Listings shows them, for Bayut or for dubizzle. Each item carries the quality score colour, the Checked and TruCheck badges and whether a floor plan is waiting to be assigned. Pages hold up to 100 listings; pass next_cursor back as cursor for the next page.

Example response:

```json
{
  "listings": [
    {
      "listing_id": "DM-2214",
      "platform": "bayut",
      "title": "2BR in Dubai Marina, marina view",
      "quality_score": "orange",
      "badges": [
        "checked"
      ],
      "floor_plan_waiting": true
    },
    {
      "listing_id": "DM-2290",
      "platform": "bayut",
      "title": "Studio in JLT, furnished",
      "quality_score": "green",
      "badges": [
        "checked"
      ],
      "floor_plan_waiting": false
    }
  ],
  "next_cursor": null
}
```

### get_listing

One listing: details, photos, floor plan, quality score and Checked and TruCheck badges. Access: read. REST: `POST /api/v1/bayut/get_listing`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `listing_id` | string | yes | Listing ID or your reference number, from list_listings. |

Returns one listing with its price, purpose, photos, assigned floor plan, quality score and the badges it has today. Use it to check whether a TruCheck request went through. Read only.

Example response:

```json
{
  "listing_id": "DM-2290",
  "platform": "bayut",
  "title": "Studio in JLT, furnished",
  "purpose": "rent",
  "price_aed": 62000,
  "photos": 14,
  "floor_plan": "assigned",
  "quality_score": "green",
  "badges": [
    "checked"
  ]
}
```

### get_listing_insights

Impressions, clicks and leads per listing, with a filter for low performing listings. Access: read. REST: `POST /api/v1/bayut/get_listing_insights`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `low_performing_only` | boolean | no | Only listings with a lower click-through rate than similar listings. |
| `location` | string | no | Community or building name. |
| `status` | string | no | Listing status as shown in Profolio. |
| `purpose` | enum | no | sale or rent. Default: both. |
| `category` | string | no | Property category as shown in Profolio. |
| `reference` | string | no | Your reference number or listing ID. |
| `user` | string | no | Only listings of this user. |
| `cursor` | string | no | Next page cursor from the previous call. |

Returns impressions, clicks and leads for each listing, as Listing Insights shows them for Bayut. Low performing means a lower click-through rate than similar listings on Bayut. Filters combine, and the listing ID filter accepts your reference number.

Example response:

```json
{
  "listings": [
    {
      "listing_id": "DM-2214",
      "location": "Dubai Marina",
      "purpose": "sale",
      "impressions": 1840,
      "clicks": 21,
      "leads": 1,
      "low_performing": true
    },
    {
      "listing_id": "DM-2290",
      "location": "JLT",
      "purpose": "rent",
      "impressions": 960,
      "clicks": 40,
      "leads": 3,
      "low_performing": false
    }
  ],
  "next_cursor": null
}
```

### list_leads

Leads from Reports, Leads by channel, with the listing each one asked about. Access: read. REST: `POST /api/v1/bayut/list_leads`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `channel` | enum | no | email, sms, phone, whatsapp or chat. Default: all. |
| `since` | datetime | no | Only leads received after this time. |
| `listing_id` | string | no | Only leads for this listing. |
| `limit` | integer | no | 1 to 100. Default: 50. |
| `cursor` | string | no | Next page cursor from the previous call. |

Lists leads from all five channels Profolio reports: email, sms, phone, whatsapp and chat. Each lead names the listing of interest and the time it arrived. Pass lead_id to get_lead for the contact details. Pages hold up to 100 leads.

Example response:

```json
{
  "leads": [
    {
      "lead_id": "ld_40a1",
      "channel": "whatsapp",
      "listing_id": "DM-2214",
      "received_at": "2026-10-10T14:22:00Z"
    },
    {
      "lead_id": "ld_40a7",
      "channel": "whatsapp",
      "listing_id": "DM-2290",
      "received_at": "2026-10-10T18:05:00Z"
    }
  ],
  "next_cursor": null
}
```

### get_lead

One lead with the contact details Profolio shows for its channel and the listing asked about. Access: read. REST: `POST /api/v1/bayut/get_lead`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `lead_id` | string | yes | Lead ID from list_leads. |

Returns one lead. What it holds depends on the channel: the email address for email leads, the enquiry text for SMS leads, the phone number and the call recording for phone leads, and the message. Read only.

Example response:

```json
{
  "lead_id": "ld_40a1",
  "channel": "whatsapp",
  "listing_id": "DM-2214",
  "name": "Sample Buyer",
  "phone": "+971500000000",
  "message": "Is the unit still available for viewing this week?",
  "received_at": "2026-10-10T14:22:00Z"
}
```

### export_leads

The Excel file Profolio exports from Reports, Leads, as a download link. Access: read. REST: `POST /api/v1/bayut/export_leads`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `channel` | enum | no | email, sms, phone, whatsapp or chat. Default: all. |

Runs the export option at the top right of Reports, Leads and returns the Excel file as a download link. Pass a channel to export one channel only. Read only: nothing in Profolio changes.

Example response:

```json
{
  "channel": "whatsapp",
  "file": "bayut-leads.xlsx",
  "download_url": "https://files.cotlet.example/exports/bayut-leads.xlsx",
  "rows": 2
}
```

### get_traffic_report

Top locations by impressions and overall listing performance across Bayut and dubizzle. Access: read. REST: `POST /api/v1/bayut/get_traffic_report`.

No parameters.

Returns the Traffic report from Reports: the top locations by impressions and the overall performance of your listings, for Bayut and dubizzle. Read only.

Example response:

```json
{
  "top_locations": [
    {
      "location": "Dubai Marina",
      "impressions": 5210
    },
    {
      "location": "JLT",
      "impressions": 3180
    }
  ],
  "overall": {
    "impressions": 8390,
    "clicks": 144,
    "leads": 11
  }
}
```

### get_credits

Your Bayut Credits balance as Manage Listings shows it. Access: read. REST: `POST /api/v1/bayut/get_credits`.

No parameters.

Returns the Bayut Credits balance shown in Manage Listings. Read only.

Example response:

```json
{
  "bayut_credits": 120
}
```

### get_market_insights

Most searched communities and buildings, average rent and sale prices and the areas with the highest ROI. Access: read. REST: `POST /api/v1/bayut/get_market_insights`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `city` | enum | yes | dubai or abu_dhabi. |

Returns Market Insights for Dubai or Abu Dhabi: the most searched communities, sub-communities and buildings, the average rent and sale prices, and the areas with the highest ROI. Read only.

Example response:

```json
{
  "city": "dubai",
  "most_searched": [
    {
      "community": "Dubai Marina",
      "type": "community"
    },
    {
      "community": "Business Bay",
      "type": "community"
    }
  ],
  "average_prices_aed": {
    "rent": 118000,
    "sale": 1950000
  },
  "highest_roi": [
    {
      "community": "Jumeirah Village Circle",
      "roi_percent": 7.4
    }
  ]
}
```

### get_transactions

Last sold transactions in Dubai from the Dubai Land Department, as in Transaction Insights. Access: read. REST: `POST /api/v1/bayut/get_transactions`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `location` | string | no | Community or building name. |
| `transaction_type` | string | no | As the Transactions filter offers it. |
| `period` | string | no | Time period as the Transactions filter offers it. |
| `property_type` | string | no | e.g. apartment, villa. |
| `bedrooms` | integer | no | Number of bedrooms. |
| `cursor` | string | no | Next page cursor from the previous call. |

Returns last sold transaction data from the Dubai Land Department, as BayutPro shows it in Transactions. Only agencies registered in Dubai have this section. Filter by location, transaction type, time period, property type and bedrooms. Read only.

Example response:

```json
{
  "transactions": [
    {
      "location": "Dubai Marina",
      "property_type": "apartment",
      "bedrooms": 2,
      "price_aed": 2150000,
      "date": "2026-09-28"
    }
  ],
  "next_cursor": null
}
```

### assign_floor_plan

Link a floor plan from your uploads to a listing, as the floor plan icon does in Profolio. Access: write, asks the user first. REST: `POST /api/v1/bayut/assign_floor_plan`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `listing_id` | string | yes | Listing ID or your reference number, from list_listings. |
| `floor_plan_id` | string | yes | Floor plan from the uploads section of Profolio. |

Assigns a floor plan from the uploads section to one listing, the same step as clicking the floor plan icon in Profolio. The icon turns green once the plan is linked, and Bayut requires a floor plan for a perfect quality score. The floor plan becomes visible on the live listing. By default you confirm each call; you can switch that off for this tool.

Example response:

```json
{
  "listing_id": "DM-2214",
  "floor_plan_id": "fp_3302",
  "status": "assigned"
}
```

### request_trucheck

Submit up to 5 photos of a Checked property to request TruCheck validation. Access: write, asks the user first. REST: `POST /api/v1/bayut/request_trucheck`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `listing_id` | string | yes | Listing ID or your reference number, from list_listings. |
| `photo_urls` | string[] | yes | Up to 5 photo URLs. |

Uploads up to 5 photos of a Checked property and submits them to request TruCheck validation, as the multiple photo upload in BayutPro does. Bayut recommends clear photos that show the unit number and an inside view. Bayut's moderation team reviews the submission, so the call returns "submitted"; check the badge later with get_listing. By default you confirm each call; you can switch that off for this tool.

Example response:

```json
{
  "listing_id": "DM-2290",
  "photos": 2,
  "status": "submitted"
}
```

### apply_boost

Apply a Bayut boost (Signature, Hot, Property of the Week) or a dubizzle boost (Refresh, Featured) to a listing. Access: write, asks the user first. REST: `POST /api/v1/bayut/apply_boost`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `listing_id` | string | yes | Listing ID or your reference number, from list_listings. |
| `product` | enum | yes | signature, hot or property_of_the_week on Bayut; refresh or featured on dubizzle. |

Applies one boost product to one listing, as the boost products in Profolio do. Bayut offers Signature, Hot and Property of the Week; dubizzle offers Refresh and Featured. Check get_credits first. By default you confirm each call; you can switch that off for this tool.

Example response:

```json
{
  "listing_id": "DM-2214",
  "platform": "bayut",
  "product": "hot",
  "status": "applied"
}
```

## How do I connect Bayut to Claude Code, Codex or Cursor?

Connecting Bayut takes three steps: request access, sign in to Bayut once, then add one MCP server or call the REST API with the same key.

### Connect Bayut to your agent.

1. **Create an account** Sign up and add Bayut in the console. Your API key is there too.

2. **Sign in to Bayut once** Open the connect page from the console and sign in to Bayut the way you always do. We keep the session, never your password, and you can revoke it anytime.

3. **Add Cotlet to your agent** Paste the snippet for your client. The same server and key serve every app you connect, so you do this once.

   Claude Code:

```
claude mcp add --transport http cotlet \
  https://cotlet.dev/mcp/v1 \
  --header "Authorization: Bearer $COTLET_API_KEY"
```

   Cursor:

```
{
  "mcpServers": {
    "cotlet": {
      "url": "https://cotlet.dev/mcp/v1",
      "headers": {
        "Authorization": "Bearer ${COTLET_API_KEY}"
      }
    }
  }
}
```

   Codex:

```
# ~/.codex/config.toml
[mcp_servers.cotlet]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY"
```

4. **Ask your agent** Ask in plain words. Your agent finds the Bayut tools on the server and calls them for you; anything that reaches other people waits for your OK unless you switch that off for a tool.

```
Every morning at 8, list my Bayut leads from the last 24 hours. Put calls and WhatsApp messages first, group them by listing, flag missed calls nobody returned, and keep phone views and WhatsApp views in a separate short list.
```

### Call Bayut from your scripts.

1. **Export your API key** Your scripts use the same API key as your agent. Keep it in an environment variable, never in your code.

```
export COTLET_API_KEY="cotlet_..."
```

2. **Call a tool** Every tool is a POST endpoint at /api/v1/bayut/{tool}. Send its parameters as JSON, exactly as listed in the endpoints above.

```
curl https://cotlet.dev/api/v1/bayut/assign_floor_plan \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"listing_id":"DM-2214","floor_plan_id":"fp_3302"}'
```

3. **Read the result** You get plain JSON back, ready for your script. A failed call costs nothing.

```
{
  "listing_id": "DM-2214",
  "floor_plan_id": "fp_3302",
  "status": "assigned"
}
```

## Why use Cotlet for Bayut?

**Built for agents**

- One MCP server for every app you connect.
- The same tools as a REST API for scripts and cron jobs.
- Works with Claude Code, Codex and Cursor.

**Your login stays yours**

- You sign in to Bayut yourself. We keep only the session, encrypted with AES-256.
- The model never sees a login.
- No stored passwords, no CAPTCHA solving, no MFA bypass.

**You stay in control**

- Pick read only, or read and write.
- Anything that reaches other people waits for your OK, unless you switch it off per tool.
- Revoke access in one click.

**Kept working for you**

- We test every integration daily.
- When Bayut changes, the tool pauses until we fix it.
- Failed calls cost nothing.

## Is there a Bayut MCP server on GitHub?

Hosted scrapers read Bayut's public search pages and agent directories. They do not sign in to your account, so they cannot read your leads or change your listings. No MCP server for Bayut agents exists.

|  | Hosted scraper | Cotlet |
|---|---|---|
| What it reads | Public listings, agents and agencies | Your own listings, leads, insights and credits in Profolio |
| Setup | Scraper account and token, no Bayut login | Request access, sign in to Profolio once in your browser |
| Write actions | None | Assign floor plans and apply boosts, each confirmed by you |
| When Bayut changes | Wait for the scraper's maintainer | Our team tests it daily and fixes it for you; failed calls are free |
| Your Bayut session | Not used | Encrypted in an EU vault, limited to the actions you allow, revoked in one click |
| Where it runs | The scraper's cloud, results as a dataset | Hosted: Claude Code, Codex, Cursor, n8n and scripts, also on a schedule |
| Price | Set by the scraper, usually per result | Free 7-day trial with 5,000 credits, then credits per call |

### Which one fits you

**Pick Cotlet if**

- you are not a developer, or you do not want to maintain a server
- you need it to keep working when Bayut changes, without checking it yourself
- your agent or a script should run it on a schedule, also while your computer is off

**Pick an open-source server if**

- you are comfortable installing, updating and fixing it yourself
- you want the session to stay on your own computer
- you only need it now and then, from one MCP client

## How much does the Bayut API cost?

Free 7-day trial with 5,000 credits, no card needed. After that, the Bayut API comes with the Cotlet plan, from $29 a month for 3,000 credits, with no limit on apps. Each month's credits stay valid for 3 months, so unused credits add up.

| Size | Price | Credits / month | Per credit |
|---|---|---|---|
| Solo | $29/mo | 3,000 | about $0.0097 |
| Pro | $99/mo | 12,000 | about $0.0083 |
| Agency | $299/mo | 40,000 | $0.0075 |

Each successful call uses credits for the work it takes; failed calls and timeouts cost nothing. A hard spend cap is on by default. Authenticate with the `Authorization: Bearer` header. [See full pricing](https://cotlet.dev/pricing)

## How Cotlet holds your access

Cotlet hosts MCP servers and REST APIs for apps with no usable API. Your agent works in your own Bayut account.

- **Company details:** The legal name, address and registration numbers of the company behind Cotlet are in the Terms of service. [Terms](https://cotlet.dev/terms)
- **Your session:** You sign in to Bayut yourself, in your browser. We keep only the session, never your password: encrypted with AES-256 in an EU vault, isolated to your account and used only when your agent calls a Bayut tool you allowed. When it expires, your agent gives you a link to sign in again. [Security](https://cotlet.dev/security)
- **Revoking access:** Disconnect Bayut in your dashboard: the session is deleted and access ends at once. Actions that reach other people wait for your OK unless you switch that off per tool.
- **What we never do:** Store passwords, solve CAPTCHAs or bypass MFA.
- **Bayut's terms:** You use your own Bayut account and stay responsible for following Bayut's terms. Cotlet is independent and not affiliated with Bayut. [Terms](https://cotlet.dev/terms)
- **Contact:** Questions about the company, security or an app: [contact@cotlet.dev](mailto:contact@cotlet.dev)

## Frequently asked questions

**How do I get access?**

Request access and pick Bayut. Cotlet reviews each request and emails you your API key.

**Do I need to be technical?**

No. You sign in to Bayut once in your browser and paste one command into your agent, or one URL into n8n. Your agent can walk you through it. There is no server to install, update or fix.

**Is a hosted server safe? My Bayut session would leave my computer.**

Cotlet keeps your Bayut session encrypted with AES-256 in an EU vault, isolated to your account and used only for the tools you allow: read only, or read and write. The AI model never sees it, and you revoke it in one click. A local server keeps the same session in a file on your computer, readable by any program you run, and needs a fresh sign-in whenever it expires.

**Do I need a Profolio account?**

Yes. Cotlet works in your own Profolio account, which Bayut gives to registered agents. The Transactions tools need an agency registered in Dubai, because Bayut shows that section only to those agencies.

**Can my agent post or send messages in Bayut without asking me?**

No. Every call to assign_floor_plan, request_trucheck or apply_boost waits for your OK by default. For scheduled automations you can switch confirmation off per tool in your dashboard, for example only for approvals.

**Can I use the Bayut API in n8n?**

Yes. Add https://cotlet.dev/mcp/v1 with your API key in n8n's MCP Client node, or call https://cotlet.dev/api/v1/bayut/{tool} from the HTTP Request node.
