MCP tools reference

Zoopla MCP tools

12 tools for Zoopla on the Cotlet MCP server. Your agent picks them from tools/list.

MCP server
https://cotlet.dev/mcp/v1
Connects with
Your own ZooplaPro agent account (listing changes work for manual uploaders, not for listings sent by a property software feed)
Integration page
Zoopla
Zoopla Endpoints
Endpoint Access Description
zoopla_list_listings read Your listings in one department, with address, price, site status, listing status and upload method.
zoopla_get_listing read Full listing: address, price, property details, description, features, photos, utilities, EPC and floorplans.
zoopla_get_listing_performance read Listing performance report: daily page views, price changes, Featured Properties upgrades, similar listings benchmark and a shareable link for the vendor or landlord.
zoopla_get_performance_overview read Listings live per department, email and phone lead counts, and Premium Listings in use for a date range.
zoopla_list_leads read Leads from the Leads report: email enquiries with message and listing, phone calls with time, caller number and result.
zoopla_get_featured_properties_report read How each of your Featured Properties is performing on Zoopla, listing by listing.
zoopla_get_upgrade_credits read Premium Listings and Weekly Featured Property credits left, their expiry, and which listings use them.
zoopla_create_listing write New listing in a department, saved as Private so it is not on Zoopla until you publish it. Manual uploaders only.
zoopla_update_listing write Change price, description, features, photos, video or floorplan links. Normally live on Zoopla within the hour. Manual uploaders only.
zoopla_set_listing_status write Publish, hide or delete a listing, or mark it under offer, sold, let agreed or let. Manual uploaders only.
zoopla_upgrade_to_premium write Make a listing Premium for 12 months, using one credit, with 2 highlights. Needs 3 photos and a 200 character description.
zoopla_feature_listing write Upgrade a listing to Weekly Featured Property, using one credit.

MCP tool zoopla_list_listings

Lists the listings of one department as ZooplaPro shows them. Each item has the upload method (manual or feed), which tells you whether the write tools can change it. Pages hold up to 100 listings; pass next_cursor back as cursor for the next page.

Parameters

Parameters: list_listings
NameTypeDescription
department required enum residential_sales, residential_lettings, commercial_sales, commercial_lettings or overseas.
site_status enum public, private or all. Default: public.
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": "zoopla_list_listings",
    "arguments": {
      "department": "residential_sales"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "listings": [
      {
        "listing_id": "67251984",
        "address": "14 Elm Road, Bristol BS7 8AB",
        "price": 375000,
        "site_status": "public",
        "listing_status": "for_sale",
        "upload_method": "manual",
        "premium": false
      },
      {
        "listing_id": "67251990",
        "address": "22 Park Street, Bath BA1 2EX",
        "price": 350000,
        "site_status": "public",
        "listing_status": "for_sale",
        "upload_method": "manual",
        "premium": true
      },
      {
        "listing_id": "67252011",
        "address": "3 Mill Lane, Bristol BS6 5JD",
        "price": 325000,
        "site_status": "public",
        "listing_status": "for_sale",
        "upload_method": "manual",
        "premium": false
      }
    ],
    "next_cursor": null
  },
  "isError": false
}

MCP tool zoopla_get_listing

Returns one listing with the fields you see when you edit it in ZooplaPro. Use it before update_listing so your agent changes only what you asked for.

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": "zoopla_get_listing",
    "arguments": {
      "listing_id": "listing_8c41d2"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "listing_id": "67251984",
    "department": "residential_sales",
    "address": "14 Elm Road, Bristol BS7 8AB",
    "price": 375000,
    "site_status": "public",
    "listing_status": "for_sale",
    "upload_method": "manual",
    "details": {
      "bedrooms": 3,
      "bathrooms": 1,
      "receptions": 2,
      "property_type": "terraced",
      "tenure": "freehold"
    },
    "full_description": "A bright three bedroom terraced house close to the park, with a south facing garden and off street parking.",
    "features": [
      "South facing garden",
      "Off street parking"
    ],
    "photo_urls": [
      "https://example.com/photos/elm-road-1.jpg",
      "https://example.com/photos/elm-road-2.jpg",
      "https://example.com/photos/elm-road-3.jpg"
    ],
    "floorplan_urls": []
  },
  "isError": false
}

MCP tool zoopla_get_listing_performance

Returns the listing performance report you generate from the ZooplaPro Dashboard for one property. Daily page views run oldest first, and the same chart marks price changes and Featured Properties upgrades. The share link gives the vendor or landlord a live snapshot that Zoopla updates daily. The tool only reads and sends nothing to the vendor.

Parameters

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

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "zoopla_get_listing_performance",
    "arguments": {
      "listing_id": "67252011"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "listing_id": "67252011",
    "address": "3 Mill Lane, Bristol BS6 5JD",
    "from": "2026-10-05",
    "to": "2026-10-11",
    "page_views": {
      "total": 321,
      "daily": [
        41,
        38,
        52,
        47,
        60,
        44,
        39
      ]
    },
    "price_changes": [],
    "featured_upgrades": [],
    "similar_listings": {
      "average_page_views": 388
    },
    "share_url": "https://www.zoopla.co.uk/pro/example-report/3f9c2a"
  },
  "isError": false
}

MCP tool zoopla_get_performance_overview

Returns the headline numbers of the ZooplaPro Dashboard for a date range: listings live per department, lead counts by type and the number of Premium Listings in use. Use list_leads for the individual leads behind the counts.

Parameters

Parameters: get_performance_overview
NameTypeDescription
from date Start of the date range. Default: 7 days ago.
to date End of the date range. Default: today.

tools/call

JSON-RPC

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

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "from": "2026-10-05",
    "to": "2026-10-11",
    "listings_live": {
      "residential_sales": 18,
      "residential_lettings": 11
    },
    "leads": {
      "sales_email": 24,
      "lettings_email": 19,
      "valuation_email": 6,
      "phone": 11,
      "total": 60
    },
    "premium_listings_in_use": 4
  },
  "isError": false
}

List leads

read

MCP tool zoopla_list_leads

Returns the leads of the ZooplaPro Leads report for a date range, newest first. Email leads have the enquirer's message and the listing; phone leads have the call time, the caller's number and whether it was answered or missed. Totals count all leads in the range, not only this page. Set listing_id to see one property.

Parameters

Parameters: list_leads
NameTypeDescription
type enum for_sale_email, to_rent_email, valuation_email, phone or all. Default: all.
listing_id string Only leads for this listing.
from date Start of the date range. Default: 7 days ago.
to date End of the date range. Default: today.
cursor string Next page cursor from the previous call.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "zoopla_list_leads",
    "arguments": {
      "type": "phone",
      "from": "2026-10-05",
      "to": "2026-10-11"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "from": "2026-10-05",
    "to": "2026-10-11",
    "totals": {
      "sales_email": 24,
      "lettings_email": 19,
      "valuation_email": 6,
      "phone": 11,
      "total": 60
    },
    "leads": [
      {
        "lead_id": "l_90c1",
        "type": "sales_email",
        "received_at": "2026-10-10T16:42:00+01:00",
        "listing_id": "67251984",
        "address": "14 Elm Road, Bristol BS7 8AB",
        "name": "Sam",
        "message": "Is the garden south facing, and can we view on Saturday?"
      },
      {
        "lead_id": "l_90b7",
        "type": "phone",
        "received_at": "2026-10-10T11:05:00+01:00",
        "listing_id": "67251990",
        "address": "22 Park Street, Bath BA1 2EX",
        "caller_number": "07700 900123",
        "result": "answered"
      }
    ],
    "next_cursor": "eyJvZmZzZXQiOjIwfQ"
  },
  "isError": false
}

MCP tool zoopla_get_upgrade_credits

Returns the upgrade credits of your account and the listings that use them. Check it before upgrade_to_premium or feature_listing, because each upgrade uses one credit.

Parameters

No parameters.

tools/call

JSON-RPC

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

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "premium_listings": {
      "credits_left": 3,
      "used_by": [
        "67251990"
      ]
    },
    "weekly_featured": {
      "credits_left": 2,
      "used_by": []
    }
  },
  "isError": false
}

MCP tool zoopla_create_listing

Creates a listing and saves it as Private, so it is not on Zoopla and reaches no one. Publish it with set_listing_status, which asks for your OK. Because nothing goes public and set_listing_status can delete it, create_listing runs without asking first. Use copy_from_listing_id to start from an existing or deleted listing, like Create similar in ZooplaPro.

Parameters

Parameters: create_listing
NameTypeDescription
department required enum residential_sales, residential_lettings, commercial_sales, commercial_lettings or overseas.
address required object Street, town and postcode.
price required integer Sale price or rent in pounds, numbers only.
details required object Bedrooms, bathrooms, receptions, property type, tenure, council tax band and other required fields.
full_description required string Full description shown on the listing.
photo_urls string[] Photos in display order.
copy_from_listing_id string Start from an existing or deleted listing, like Create similar.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "zoopla_create_listing",
    "arguments": {
      "department": "residential_sales",
      "address": "address",
      "price": 1,
      "details": "details",
      "full_description": "full description"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "listing_id": "67252040",
    "department": "residential_sales",
    "address": "9 Orchard Close, Bristol BS9 3QE",
    "price": 410000,
    "site_status": "private",
    "listing_status": "for_sale"
  },
  "isError": false
}

Update listing

write Confirm

MCP tool zoopla_update_listing

Changes the fields you pass on one listing and leaves the others as they are. Edits on a public listing normally go live on Zoopla within 1 hour, and a price change appears as a mark in the listing performance chart. Listings sent by a property software feed cannot be changed here. 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 price, price_modifier, full_description, features, photo_urls, video_urls, floorplan_urls.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "zoopla_update_listing",
    "arguments": {
      "listing_id": "listing_8c41d2",
      "fields": "fields"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "listing_id": "67251990",
    "address": "22 Park Street, Bath BA1 2EX",
    "price_before": 350000,
    "price": 340000,
    "live_on_zoopla": "within 1 hour"
  },
  "isError": false
}

Set listing status

write Confirm

MCP tool zoopla_set_listing_status

Changes the site status or the listing status of one listing, or both. Listing status shows the buyer or tenant what stage the property is at. Changes normally go live on Zoopla within 1 hour. Listings sent by a property software feed cannot be changed here. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: set_listing_status
NameTypeDescription
listing_id required string Listing ID from list_listings.
site_status enum public, private or deleted.
listing_status enum for_sale, sale_under_offer, sold, to_rent, let_agreed or let.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "zoopla_set_listing_status",
    "arguments": {
      "listing_id": "67251984",
      "listing_status": "sale_under_offer"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "listing_id": "67251984",
    "department": "residential_sales",
    "address": "14 Elm Road, Bristol BS7 8AB",
    "site_status": "public",
    "listing_status": "sale_under_offer",
    "live_on_zoopla": "within 1 hour",
    "url": "https://www.zoopla.co.uk/for-sale/details/67251984/"
  },
  "isError": false
}

MCP tool zoopla_upgrade_to_premium

Upgrades one listing to Premium, which lasts 12 months or until the listing is removed. It uses one Premium Listings credit and fails if the listing has fewer than 3 photos or a full description under 200 characters. Pick the 2 highlights from the Premium Listings highlights chart. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: upgrade_to_premium
NameTypeDescription
listing_id required string Listing ID from list_listings.
highlight_ids string[] Up to 2 highlights from the Premium Listings highlights chart.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "zoopla_upgrade_to_premium",
    "arguments": {
      "listing_id": "67252040",
      "highlight_ids": [
        "garden",
        "garage"
      ]
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "listing_id": "67251984",
    "premium": true,
    "premium_until": "2027-10-11",
    "highlights": [
      "garden",
      "parking"
    ],
    "credits_left": 2
  },
  "isError": false
}

MCP tool zoopla_feature_listing

Upgrades one listing to Weekly Featured Property for a week and uses one Weekly Featured Property credit. It works when your package includes Featured Property. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: feature_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": "zoopla_feature_listing",
    "arguments": {
      "listing_id": "listing_8c41d2"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "listing_id": "67252011",
    "featured_from": "2026-10-12",
    "featured_until": "2026-10-19",
    "credits_left": 1
  },
  "isError": false
}