Cubi Estate — MCP connector
We are creating a new, transparent, and hyper-personalized real estate market by addressing its shortcomings.
AI-native property search across 2.2M+ active listings in 17 European countries, in 7 languages. Read-only. Model Context Protocol over Streamable HTTP.
Endpoint
Transport: MCP Streamable HTTP (stateless). Auth: optional — anonymous, rate-limited read access, or OAuth 2.1 (PKCE S256, dynamic client registration, scopes search and offline_access; discovery via /.well-known/oauth-protected-resource). Tokens can be revoked per grant (RFC 7009) at https://mcp.cubi.estate/oauth/revoke.
Connect it
Listed in the Anthropic Connectors Directory as Cubi Estate — add it from there, or Settings → Connectors → Add custom connector with the URL above. No authentication step.
Published in the ChatGPT app directory as Cubi Estate (6 October 2026) — open the app page and add it from there. Developers can also add it as a custom MCP connector with the URL above (OAuth per user, or None for anonymous, rate-limited access).
Add as a remote MCP connector with the URL above (paid plans). Choose OAuth to connect per user — dynamic client registration accepts the Perplexity callback — or None for anonymous, rate-limited access. A directory listing has been requested.
Remote MCP is supported directly as a tool type. No registration or allowlisting is required.
Omit headers entirely — this server needs no credential. allowed_tools is optional but worth setting to the two you actually use.
Add to ~/.gemini/config/mcp_config.json (global) or .agents/mcp_config.json (per workspace):
⚠️ The field is serverUrl here, but url in the API above — the two are not interchangeable, and using the wrong one fails silently with the server never being contacted.
Tools
| Tool | What it does |
|---|---|
| search_properties | Search Cubi Estate's live property listings across 17 European countries. |
| get_listing | Fetch one Cubi Estate listing's full details. |
| get_contact_options | How a buyer can reach the agent for one Cubi Estate listing. |
| filter_listings | Structured property filter — bypasses natural-language extraction. |
| compare_asking_prices | Compare one listing's asking price with comparable homes on Cubi. |
| compare_inventory | What a budget buys in 2-3 towns or cities: the share of each place's |
| find_similar_elsewhere | Homes like one listing, in another city, side by side with it. |
| get_price_history | Has this home's asking price changed? Every change Cubi observed. |
| corpus_stats | Day-by-day Cubi corpus activity — aggregate counts only, no listings. |
| data_layer_stats | Live coverage of Cubi's per-listing enrichment data layers. |
| get_daily_new_listing_stats | How many NEW listings Cubi added per day, by country and by source, |
All tools are read-only (readOnlyHint annotated); none mutates data.
Try these prompts
Service posture
| Data | Read-only; no tool mutates anything. |
| Latency | Per-call budget 25s; typical calls < 3s. Errors are returned in-band. |
| Freshness | Gathered from public property portals and agencies in the covered countries; each result shows the date its data last changed, and stats are computed live. |
| Coverage | Portugal, Spain, Italy, France, Germany, Belgium, Austria, Finland, Cyprus, Croatia, Slovakia, Malta, Greece, Czech Republic, Poland, Netherlands, Bulgaria. Listings outside these countries may appear in results but are not covered: their place names are not resolved by search. |
| Privacy | Each tool call is logged with its tool name, full arguments (including search text), the listings returned, timing, status, caller IP address and User-Agent, and the OAuth client id for signed-in clients — never tokens. Used to run and secure the connector (rate limiting, abuse prevention, service quality). Free-text search queries and network addresses are removed after 7 days; the record is deleted after 14 days. See the privacy policy. |
| Sources | Aggregated from public listing sites and partner agencies; each result links to its original source. |
Troubleshooting
| A search returns nothing | Broaden it: drop a filter, widen the price range, or use a larger place name (a region rather than a neighbourhood). Coverage is strongest in IT, PL, DE, ES, PT, BE, FR, FI. |
| The first search is slow | After a long idle period the first natural-language search can take up to 25s while caches warm, and returns a message saying so rather than hanging. Retry once — subsequent searches take a few seconds. |
| get_listing says not found | Pass the listing URL exactly as printed on a result card, or a source-prefixed id from a recent result (e.g. dils:23116569). Listings that have since been withdrawn are no longer retrievable. |
| Replies are too long | Pass limit to search_properties (1–10) or filter_listings (1–50) to get fewer, shorter results. |
| Daily quota message | Anonymous use has a daily budget, weighted by what each call costs to serve. Ordinary conversational use will not reach it; automated bulk use will. Write to support@cubi.estate if you need a higher allowance. |
| Data looks out of date | Results are served from our index, not fetched live from the source site at request time; the corpus refreshes daily. Follow the source link for the authoritative current state. |