MCP Server

Propick Integration MCP

ae.propick/propick
Business & Operations Real Estate Public & reachable MCP 2026-07-28

What this MCP does

Synchronizes Dubai real-estate listings, resolves projects and responsible agents, and reports import runs and per-property outcomes.

get_reference
Every closed vocabulary and limit of the import payload in one call: categories, listing types, building statuses, rental periods, occupancy statuses, currency codes, area units, property features, bedroom counts, payload limits.
Input schema
{'type': 'object', 'properties': {}}
get_run
Fetch one import run by importId: status, counters of planned and applied decisions, stop reason if the run did not finish.
Input schema
{'type': 'object', 'required': ['importId'], 'properties': {'importId': {'type': 'string', 'description': 'The id returned by sync_properties.'}}}
list_events
Per-property outcomes of import runs: what happened to each externalPropertyId, with error codes and details. Filter by importId and/or externalPropertyId. Paginated.
Input schema
{'type': 'object', 'properties': {'page': {'type': 'integer', 'minimum': 1}, 'limit': {'type': 'integer', 'maximum': 500, 'minimum': 1}, 'importId': {'type': 'string'}, 'externalPropertyId': {'type': 'string'}}}
list_responsibles
List agency members that can be set as responsibleUsername on a listing. Agency channels only: a personal channel gets a refusal, not an empty list.
Input schema
{'type': 'object', 'properties': {'page': {'type': 'integer', 'minimum': 1}, 'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1}}}
list_runs
List this channel import runs, newest first. Paginated.
Input schema
{'type': 'object', 'properties': {'page': {'type': 'integer', 'minimum': 1}, 'limit': {'type': 'integer', 'maximum': 30, 'minimum': 1}}}
ping
Health check for the integration key. Returns the channel clientId. Call once after connecting to verify the key works.
Input schema
{'type': 'object', 'properties': {}}
search_projects
Resolve a development project to the numeric projectId required by every listing in sync_properties. Search by name fragment (min 2 characters) or by exact DLD project number (digits-only query). Only projects the import would actually accept are returned.
Input schema
{'type': 'object', 'required': ['query'], 'properties': {'page': {'type': 'integer', 'minimum': 1}, 'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1}, 'query': {'type': 'string', 'maxLength': 120, 'minLength': 2}}}
sync_properties
Submit a batch of property listings (up to 500) for import. The engine diffs the batch against the channel current stock and plans creations, updates, archivals and deletions; quotas and safety thresholds are enforced server-side. ALWAYS start with mode=DRY_RUN: it queues a plan without changing anything. Read the plan via get_run and list_events, show the summary to the human manager, and only after their explicit confirmation repeat the same call with mode=APPLY. Each element of properties mirrors the REST property draft body; use get_reference for every closed vocabulary and limit, search_projects to resolve projectId, list_responsibles to resolve responsibleUsername. Returns the importId of the queued run.
Input schema
{'type': 'object', 'required': ['mode', 'properties'], 'properties': {'mode': {'enum': ['DRY_RUN', 'APPLY'], 'type': 'string', 'description': 'DRY_RUN plans without applying; APPLY executes. Never APPLY without human confirmation of the DRY_RUN plan.'}, 'properties': {'type': 'array', 'items': {'type': 'object', 'required': ['externalPropertyId'], 'description': 'One listing. externalPropertyId is the stable id in YOUR system; the rest mirrors the REST property draft body (title, description, category, listingType, price, squareArea, projectId, responsibleUsername, permitNumber, images, ...). get_reference lists every closed vocabulary and limit.'}, 'maxItems': 500}, 'confirmRemovals': {'type': 'boolean', 'description': 'A run that would archive or delete more than the safety share of the current stock stops with an error; pass true to confirm the removals are intended.'}}}
Added
get_reference
2026年9月11日0:23
Added
list_responsibles
2026年9月11日0:23
Added
search_projects
2026年9月11日0:23
Added
list_events
2026年9月11日0:23
Added
list_runs
2026年9月11日0:23
Added
get_run
2026年9月11日0:23
Added
sync_properties
2026年9月11日0:23
Added
ping
2026年9月11日0:23