MCP tools reference

Property Finder MCP tools

11 tools for Property Finder on the Cotlet MCP server. Your agent picks them from tools/list.

MCP server
https://cotlet.dev/mcp/v1
Connects with
Your own PF Expert account (agency admin or agent), email and password
Integration page
Property Finder
Property Finder Endpoints
Endpoint Access Description
property-finder_list_listings read Listings in your agency with status, agent, price, quality score and active upgrade.
property-finder_get_listing read Full listing: title, description, location, specs, price, images, permit number and quality score.
property-finder_get_listing_stats read Views and leads for one listing since a date.
property-finder_list_leads read Leads from your listings, newest first, with contact, listing, agent and time received.
property-finder_list_agents read Agents in your agency with their IDs and number of listings.
property-finder_get_credits read The credit balance PF Expert shows for your agency.
property-finder_create_listing write New draft listing in PF Expert. Nothing goes live until you publish it.
property-finder_update_listing write Change the price, description, images, permit or agent of a listing.
property-finder_publish_listing write Put a draft or unpublished listing live on Property Finder.
property-finder_unpublish_listing write Take a live listing off the portal. It stays in PF Expert.
property-finder_upgrade_listing write Apply Featured or Premium to a live listing. Uses credits.

MCP tool property-finder_list_listings

Returns listings of your agency, newest first. Quality score is the percentage PF Expert shows for a published listing. Pages hold up to 100 listings; pass next_cursor back as cursor for the next page.

Parameters

Parameters: list_listings
NameTypeDescription
status enum live, draft or unpublished. Default: live.
agent_id string Only listings assigned to this agent, from list_agents.
purpose enum sale or rent.
max_quality_score integer Only listings at or under this quality score, 0 to 100.
limit integer 1 to 100. Default: 50.
cursor string Next page cursor from the previous call.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "property-finder_list_listings",
    "arguments": {}
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "listings": [
      {
        "listing_id": "01JA7K3M9Q",
        "title": "Furnished 2BR with marina view",
        "purpose": "rent",
        "status": "live",
        "agent_id": "ag_3d91",
        "price": 145000,
        "quality_score": 88,
        "upgrade": "featured"
      },
      {
        "listing_id": "01JA8B2N4R",
        "title": "Studio near the metro",
        "purpose": "rent",
        "status": "live",
        "agent_id": "ag_77c2",
        "price": 62000,
        "quality_score": 64,
        "upgrade": null
      }
    ],
    "next_cursor": null
  },
  "isError": false
}

MCP tool property-finder_get_listing

Returns everything PF Expert holds for one listing, including the permit number if you entered one. Use it to see why a quality score is low before you change anything. A draft has no quality score yet.

Parameters

Parameters: get_listing
NameTypeDescription
listing_id required string Listing ID from list_listings.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "property-finder_get_listing",
    "arguments": {
      "listing_id": "listing_8c41d2"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "listing_id": "01JA8B2N4R",
    "title": "Studio near the metro",
    "purpose": "rent",
    "status": "live",
    "property_type": "Apartment",
    "location": "Business Bay",
    "price": 62000,
    "bedrooms": 0,
    "size_sqft": 410,
    "description": "Bright studio, close to the metro.",
    "image_urls": [
      "https://example.com/photos/studio-1.jpg"
    ],
    "permit_number": null,
    "agent_id": "ag_77c2",
    "quality_score": 64
  },
  "isError": false
}

MCP tool property-finder_get_listing_stats

Returns the performance numbers PF Expert shows for one listing, from the start date to now. Call it once per listing, so keep the set small and filter with list_listings first. A listing that went live after the start date counts from its publish date.

Parameters

Parameters: get_listing_stats
NameTypeDescription
listing_id required string Listing ID from list_listings.
since date Count from this date. Default: 30 days ago.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "property-finder_get_listing_stats",
    "arguments": {
      "listing_id": "01JA7K3M9Q",
      "since": "2026-10-06"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "listing_id": "01JA7K3M9Q",
    "since": "2026-09-11",
    "views": 1840,
    "leads": 0
  },
  "isError": false
}

List leads

read

MCP tool property-finder_list_leads

Returns leads that came in through your listings, newest first. Each lead names the listing and the agent it belongs to. Pages hold up to 100 leads; pass next_cursor back as cursor for the next page.

Parameters

Parameters: list_leads
NameTypeDescription
since datetime Only leads received after this time.
listing_id string Only leads for this listing.
agent_id string Only leads for this agent.
limit integer 1 to 100. Default: 50.
cursor string Next page cursor from the previous call.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "property-finder_list_leads",
    "arguments": {
      "since": "2026-10-11T08:00:00+04:00",
      "limit": 100
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "leads": [
      {
        "lead_id": "ld_90f1",
        "name": "Jamie Hart",
        "phone": "+971500000000",
        "listing_id": "01JA7K3M9Q",
        "agent_id": "ag_3d91",
        "received_at": "2026-10-10T16:42:00+04:00"
      }
    ],
    "next_cursor": null
  },
  "isError": false
}

MCP tool property-finder_list_agents

Returns the agents of your agency. Use agent_id from here to assign a listing or to filter listings and leads. You see the agents your own role can see in PF Expert.

Parameters

No parameters.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "property-finder_list_agents",
    "arguments": {}
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "agents": [
      {
        "agent_id": "ag_3d91",
        "name": "Sara Khan",
        "listings": 24
      },
      {
        "agent_id": "ag_77c2",
        "name": "Omar Haddad",
        "listings": 11
      }
    ]
  },
  "isError": false
}

MCP tool property-finder_get_credits

Returns the credits available for upgrades. Check it before upgrade_listing so the agent does not plan a spend you cannot cover. It reads the balance only and spends nothing.

Parameters

No parameters.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "property-finder_get_credits",
    "arguments": {}
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "credits": 2500
  },
  "isError": false
}

MCP tool property-finder_create_listing

Saves a draft in PF Expert and returns its listing_id. The draft is visible only to you and your agency. It reaches no one and you can delete it in PF Expert, so it does not ask for confirmation. Run publish_listing to put it live.

Parameters

Parameters: create_listing
NameTypeDescription
title required string Listing title.
purpose required enum sale or rent.
property_type required string As in PF Expert, e.g. Apartment or Villa.
location required string Community or building, matched to the Property Finder location list.
price required integer Price as you enter it in PF Expert.
bedrooms integer Number of bedrooms, 0 for a studio.
bathrooms integer Number of bathrooms.
size_sqft integer Built-up area in square feet.
description string Listing description.
image_urls string[] Image URLs, first one is the cover.
permit_number string Permit number, where PF Expert asks for one.
agent_id string Assigned agent, from list_agents.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "property-finder_create_listing",
    "arguments": {
      "title": "Furnished 2BR with marina view",
      "purpose": "rent",
      "property_type": "Apartment",
      "location": "Dubai Marina",
      "price": 145000,
      "bedrooms": 2,
      "permit_number": "7123456789",
      "agent_id": "ag_3d91",
      "image_urls": [
        "https://example.com/photos/marina-2br-1.jpg"
      ]
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "listing_id": "01JA9C5P7T",
    "status": "draft",
    "agent_id": "ag_3d91"
  },
  "isError": false
}

Update listing

write Confirm

MCP tool property-finder_update_listing

Applies the fields you pass and leaves the rest as they are. Changes to a live listing are visible to buyers and renters, and PF Expert may recalculate the quality score. Returns the updated fields. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: update_listing
NameTypeDescription
listing_id required string Listing ID from list_listings.
fields required object Any of the create_listing fields.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "property-finder_update_listing",
    "arguments": {
      "listing_id": "01JA8B2N4R",
      "fields": {
        "description": "Bright furnished studio in JLT Cluster D, two minutes from the metro, with lake view and 410 sq ft."
      }
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "listing_id": "01JA8B2N4R",
    "updated": [
      "description",
      "image_urls"
    ],
    "quality_score": 72
  },
  "isError": false
}

Publish listing

write Confirm

MCP tool property-finder_publish_listing

Publishes the listing with the listing type you choose on the Publish screen of PF Expert: standard, featured or premium. Featured and premium run for 15 days or 1 month; the options your market shows may differ. It returns the live status and the portal URL. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: publish_listing
NameTypeDescription
listing_id required string Listing ID from list_listings.
listing_type required enum standard, featured or premium.
duration enum 15_days or 1_month for featured and premium. Standard runs 1 month.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "property-finder_publish_listing",
    "arguments": {
      "listing_id": "listing_8c41d2",
      "listing_type": "standard"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "listing_id": "01JA7K3M9Q",
    "status": "live",
    "listing_type": "standard",
    "url": "https://www.propertyfinder.ae/en/plp/rent/apartment-for-rent-dubai-dubai-marina-01JA7K3M9Q.html"
  },
  "isError": false
}

Unpublish listing

write Confirm

MCP tool property-finder_unpublish_listing

Removes the listing from Property Finder search and keeps it in PF Expert with status unpublished, so you can publish it again later. Leads already received stay in your leads. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: unpublish_listing
NameTypeDescription
listing_id required string Listing ID from list_listings.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "property-finder_unpublish_listing",
    "arguments": {
      "listing_id": "listing_8c41d2"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "listing_id": "01JA8B2N4R",
    "status": "unpublished"
  },
  "isError": false
}

Upgrade listing

write Confirm

MCP tool property-finder_upgrade_listing

Upgrades a live listing to featured or premium for 15 days or 1 month and pays with credits. It returns the expiry date and the credits left. Spotlight is a bidding product and is not covered by this tool. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: upgrade_listing
NameTypeDescription
listing_id required string Listing ID from list_listings.
listing_type required enum featured or premium.
duration required enum 15_days or 1_month.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "property-finder_upgrade_listing",
    "arguments": {
      "listing_id": "01JA7K3M9Q",
      "listing_type": "featured",
      "duration": "15_days"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "listing_id": "01JA7K3M9Q",
    "status": "live",
    "listing_type": "featured",
    "expires_at": "2026-10-26T12:00:00+04:00",
    "credits_left": 2380
  },
  "isError": false
}